oracel中插入timestamp oracle timestamp tochar_Oracle时间函数 

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

测试

oracel中插入timestamp oracle timestamp tochar_常用时间格式_02

注意 要想达到    ”字符串' 11-Nov-1999' 的日期时间格式模型是' DD-Mon-YYYY' ”。需要指定 'nlsparam' 参数

select TO_CHAR(sysdate,'DD-Mon-YYYY','NLS_DATE_LANGUAGE=English') from dual

oracel中插入timestamp oracle timestamp tochar_常用时间格式_03

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.

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

  • 标点符号,如连字符,斜杠,逗号,句点和冒号
  • 字符文字,用双引号括起来

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

Element

Specify 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

oracel中插入timestamp oracle timestamp tochar_字符串_04

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

AD
A.D.

Yes

AD indicator with or without periods.

AD 在汉语中显示为公元

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

oracel中插入timestamp oracle timestamp tochar_oracel中插入timestamp_05

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

oracel中插入timestamp oracle timestamp tochar_to_char()_06

BC
B.C.

Yes

BC indicator with or without periods.

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

oracel中插入timestamp oracle timestamp tochar_Oracle时间函数 _07

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

D

Yes

Day of week (1-7).

select TO_CHAR(sysdate,'D') from dual 

oracel中插入timestamp oracle timestamp tochar_Oracle时间函数 _08

 在我们底盘今天是星期四

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

oracel中插入timestamp oracle timestamp tochar_Oracle时间函数 _09

DD

Yes

Day of month (1-31).

 select TO_CHAR(sysdate,'DD') from dual

oracel中插入timestamp oracle timestamp tochar_字符串_10

 嗯,今天是 10月18号

DDD

Yes

Day of year (1-366).

一年的第多少天

select TO_CHAR(sysdate,'DDD') from dual 

oracel中插入timestamp oracle timestamp tochar_Oracle时间函数 _11

 下面这很好理解

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.

oracel中插入timestamp oracle timestamp tochar_to_char()_12

 

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.

oracel中插入timestamp oracle timestamp tochar_常用时间格式_13