Oracle时间函数to_char()及常⽤时间格式
TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])
Oracle TO_CHAR()函数返回以指定格式表⽰的DATE或INTERVAL值。
{ | interval }是⼀个DateTime或⼀个INTERVAL 类型,是要转换的⽇期
fmt是⼀个字符串,⽤于确定⽇期转换的格式。
如果省略fmt,则date转换VARCHAR2为如下值:
DATE 值将转换为默认⽇期格式的值。
TIMESTAMP和TIMESTAMP WITH LOCAL TIME ZONE值将转换为默认时间戳格式的值。
TIMESTAMP WITH TIME ZONE 值将使⽤时区格式转换为默认时间戳中的值。
'nlsparam'参数指定了⽉和⽇名称的缩写语⾔。这个参数可以有这样的形式:
'NLS_DATE_LANGUAGE = 语⾔ '
例如,Monday,Mon,January,Jan等。
如果省略'nlsparam',则此函数使⽤会话的默认⽇期语⾔。
字符串' 17:45:29' 的⽇期时间格式模型是' HH24:MI:SS'。
字符串' 11-Nov-1999' 的⽇期时间格式模型是' DD-Mon-YYYY'。
测试
注意 要想达到 ”字符串' 11-Nov-1999' 的⽇期时间格式模型是' DD-Mon-YYYY' ”。需要指定 'nlsparam' 参数
select TO_CHAR(sysdate,'DD-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
Uppercase Letters in Date Format Elements
Capitalization in a spelled-out word, abbreviation, or Roman numeral follows capitalization in the corresponding format element. For example, the date format model 'DAY' produces capitalized words like 'MONDAY'; 'Day' produces 'Monday'; and 'day' produces 'monday'.
oracle 时间转换拼写单词,缩写或罗马数字中的⼤写在相应的格式元素中⼤写。例如,⽇期格式模型'DAY'产⽣像'MONDAY'这样的⼤写单词; 'Day'产
⽣'Monday'; ⽽''day'产⽣'monday'。
select TO_CHAR(sysdate,'DAY-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
select TO_CHAR(sysdate,'Day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
select TO_CHAR(sysdate,'day-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual
因为是英⽂⽂档,所以要指定'NLS_DATE_LANGUAGE=English'
You can include these characters in a date format model:
Punctuation such as hyphens, slashes, commas, periods, and colons
Character literals, enclosed in double quotation marks
These characters appear in the return value in the same location as they appear in the format model.您可以在⽇期格式模型中包含这些字符:标点符号,如连字符,斜杠,逗号,句点和冒号
字符⽂字,⽤双引号括起来
这些字符出现在返回值中与格式模型中显⽰的位置相同的位置。Element Specify in TO_* datetime functions?Description Yes Punctuation and quoted text is reproduced in the result.格式符中可以包含左边的元素
select TO_CHAR(sysdate,' "今天" day-Mon-YYYY') from dual
其次 格式字符串中还可以包含 空格 Yes AD indicator with or without periods.
AD 在汉语中显⽰为公元
select TO_CHAR(sysdate,'AD day-Mon-YYYY') from dual
select TO_CHAR(sysdate,'A.D. day-Mon-YYYY') from dual 还是⼀样Yes Meridian indicator with or without periods.
可以显⽰当前是下午还是上午
select TO_CHAR(sysdate,'AM day-Mon-YYYY') from dual
Yes BC indicator with or without periods.
select TO_CHAR(sysdate,'BC day-Mon-YYYY') from dual
可见他和AM⼀样,都表⽰公元
Yes Day of week (1-7).
1
-2
/3
,4
.5
;6
:7"text"1
AD 2 A.D.1
AM 2 A.M.1
BC 2 B.C.D
select TO_CHAR(sysdate,'D') from dual
在我们底盘今天是星期四
Yes Name of day, padded with blanks to display width of the widest name of day in the date language used for
this element.select TO_CHAR(sysdate,'DAY') from dual
Yes Day of month (1-31). select TO_CHAR(sysdate,'DD') from dual
嗯,今天是 10⽉18号
Yes Day of year (1-366).
⼀年的第多少天select TO_CHAR(sysdate,'DDD') from dual
下⾯这很好理解
Yes Hour of day (1-12).
No Hour of day (1-12).
Yes Hour of day (0-23).
Yes Minute (0-59). 电脑上当前的分钟 ⽐ oracle查出来的分钟 多了3分钟
Yes Month (01-12; January = 01).
Yes Abbreviated name of month.
DA
Y DD DDD HH HH12HH24MI MM MON
Yes Name of month, padded with blanks to display width of the widest name of month in the date language used for this element.
Yes Second (0-59).
No Week of year (1-52 or 1-53) based on the ISO standard. ⼀年中的第⼏周
No Week of year (1-53) where week 1 starts on the first day of the year and continues to the seventh day of the
year.
⼀年中的第⼏周 ,⼀年的第⼀天就是第⼀周的第⼀天 即每年的1⽉1⽇作为⼀周的第⼀天
No Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh.
⼀个⽉的第⼏周, 将每⽉的第⼀天作为⼀周的开始 ,
select TO_CHAR(sysdate,'IW') from dual --42 ⼀年中的第⼏周
select TO_CHAR(sysdate,'WW') from dual --42
select TO_CHAR(TO_DATE('2018-01-01','YYYY-MM-DD'),'YYYY-MM-DD DAY') from dual --2018-10-01 星期⼀ 可见⼀周第⼀天就是星期⼀ 即1⽉1⽇都是星期⼀
select TO_CHAR(sysdate,'W','NLS_DATE_LANGUAGE=English') from dual --3 ⼀个⽉中的第⼏周
SELECT TO_DATE('2018-10-01','YYYY-MM-DD') FROM DUAL --01-10⽉-18
select TO_CHAR(TO_DATE('2018-10-01','YYYY-MM-DD'),'YYYY-MM-DD DAY') from dual --2018-10-01 星期⼀ 可见⼀周第⼀天就是星期⼀ 即每⽉1⽇都是星期⼀
Yes
Year with comma in this position.
Yes 4-digit year; S prefixes BC dates with a minus sign.
Yes Last 3, 2, or 1 digit(s) of year.
MON
TH SS IW WW W Y,YYY 1
YYYY 2SYYYY 1
YYY 2
YY 3Y
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论