Oracle时间函数 to_char()及常用时间格式

TO_CHAR({ datetime | interval } [, fmt [, 'nlsparam' ] ])

Oracle  TO_CHAR()函数返回以指定格式表示的字符串DATE或INTERVAL值。

{ datetime | 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',则此函数使用会话的默认日期语言。

https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions180.htm

字符串' 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

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34510

https://docs.oracle.com/cd/B19306_01/server.102/b14200/sql_elements004.htm#i34924

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'.

拼写单词,缩写或罗马数字中的大写在相应的格式元素中大写。例如,日期格式模型'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.

您可以在日期格式模型中包含这些字符:

  • 标点符号,如连字符,斜杠,逗号,句点和冒号

  • 字符文字,用双引号括起来

这些字符出现在返回值中与格式模型中显示的位置相同的位置。

ElementSpecify in TO_* datetime functions?Description
-
/
,
.
;
:
"text"

Yes

Punctuation and quoted text is reproduced in the result.

格式符中可以包含左边的元素 

 select TO_CHAR(sysdate,' "今天" day-Mon-YYYY') from dual

其次 格式字符串中还可以包含 空格 

AD
A.D.

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   还是一样

AM
A.M.

Yes

Meridian indicator with or without periods.

可以显示当前是下午还是上午 

 select TO_CHAR(sysdate,'AM day-Mon-YYYY') from dual

BC
B.C.

Yes

BC indicator with or without periods.

 select TO_CHAR(sysdate,'BC day-Mon-YYYY') from dual

  可见他和AM一样,都表示公元

D

Yes

Day of week (1-7).

select TO_CHAR(sysdate,'D') from dual 

 在我们底盘今天是星期四

DAY

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

DD

Yes

Day of month (1-31).

 select TO_CHAR(sysdate,'DD') from dual

 嗯,今天是 10月18号

DDD

Yes

Day of year (1-366).

一年的第多少天

select TO_CHAR(sysdate,'DDD') from dual 

 下面这很好理解

HH

Yes

Hour of day (1-12).

HH12

No

Hour of day (1-12).

HH24

Yes

Hour of day (0-23).

 

MI

Yes

Minute (0-59). 电脑上当前的分钟 比 oracle查出来的分钟 多了3分钟

MM

Yes

Month (01-12; January = 01).

MON

Yes

Abbreviated name of month.

MONTH

Yes

Name of month, padded with blanks to display width of the widest name of month in the date language used for this element.

SS

Yes

Second (0-59).

IW

No

Week of year (1-52 or 1-53) based on the ISO standard. 一年中的第几周

WW

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日作为一周的第一天

W

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日都是星期一

 

 

Y,YYY

Yes

Year with comma in this position.

 

YYYY
SYYYY

Yes

4-digit year; S prefixes BC dates with a minus sign.

YYY
YY
Y

Yes

Last 3, 2, or 1 digit(s) of year.

 

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值