来源于Oracle官方文档,为了工作中方便使用,这里截取下来供参考:
http://docs.oracle.com/cd/E11882_01/server.112/e41084/sql_elements004.htm#i34924
Table 3-15 Datetime Format Elements
Element | TO_* datetime functions? | Description |
---|---|---|
| Yes | Punctuation and quoted text is reproduced in the result. |
| Yes | AD indicator with or without periods. |
| Yes | Meridian indicator with or without periods. |
| Yes | BC indicator with or without periods. |
| Century.
For example, 2002 returns 21; 2000 returns 20. | |
| Yes | Day of week (1-7). This element depends on the NLS territory of the session. |
| Yes | Name of day. |
| Yes | Day of month (1-31). |
| Yes | Day of year (1-366). |
| Yes | Returns a value in the long date format, which is an extension of the Oracle Database Restriction: You can specify this format only with the |
| Yes | Returns a value in the short date format. Makes the appearance of the date components (day name, month number, and so forth) depend on the Restriction: You can specify this format only with the |
| Yes | Abbreviated name of day. |
| Yes | Abbreviated era name (Japanese Imperial, ROC Official, and Thai Buddha calendars). |
| Yes | Full era name (Japanese Imperial, ROC Official, and Thai Buddha calendars). |
| Yes | Fractional seconds; no radix character is printed. Use the X format element to add the radix character. Use the numbers 1 to 9 after FF to specify the number of digits in the fractional second portion of the datetime value returned. If you do not specify a digit, then Oracle Database uses the precision specified for the datetime data type or the data type's default precision. Valid in timestamp and interval formats, but not in Examples:
|
| Yes | Returns a value with no leading or trailing blanks. See Also: Additional discussion on this format model modifier in the Oracle Database SQL Language Reference |
| Yes | Requires exact matching between the character data and the format model. See Also: Additional discussion on this format model modifier in the Oracle Database SQL Language Reference |
| Yes | Hour of day (1-12). |
| Yes | Hour of day (0-23). |
| Week of year (1-52 or 1-53) based on the ISO standard. | |
| Last 3, 2, or 1 digit(s) of ISO year. | |
| 4-digit year based on the ISO standard. | |
| Yes | Julian day; the number of days since January 1, 4712 BC. Number specified with J must be integers. |
| Yes | Minute (0-59). |
| Yes | Month (01-12; January = 01). |
| Yes | Abbreviated name of month. |
| Yes | Name of month. |
| Yes | Meridian indicator with or without periods. |
| Quarter of year (1, 2, 3, 4; January - March = 1). | |
| Yes | Roman numeral month (I-XII; January = I). |
| Yes | Lets you store 20th century dates in the 21st century using only two digits. See Also: "The RR Datetime Format Element" |
| Yes | Round year. Accepts either 4-digit or 2-digit input. If 2-digit, provides the same return as RR. If you do not want this functionality, then enter the 4-digit year. |
| Yes | Second (0-59). |
| Yes | Seconds past midnight (0-86399). |
| Yes | Returns a value in the short time format. Makes the appearance of the time components (hour, minutes, and so forth) depend on the Restriction: You can specify this format only with the |
| Yes | Daylight saving information. The TZD value is an abbreviated time zone string with daylight saving information. It must correspond with the region specified in TZR. Valid in timestamp and interval formats, but not in Example: |
| Yes | Time zone hour. (See Example: |
| Yes | Time zone minute. (See Example: |
| Yes | Time zone region information. The value must be one of the time zone region names supported in the database. Valid in timestamp and interval formats, but not in Example: US/Pacific |
| 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. | |
| Week of month (1-5) where week 1 starts on the first day of the month and ends on the seventh. | |
| Yes | Local radix character. Example: |
| Yes | Year with comma in this position. |
| Year, spelled out; | |
| Yes | 4-digit year; |
| Yes | Last 3, 2, or 1 digit(s) of year. |
我们来逐一测试下:
1、诸如- / , . ; : "text" 这类符号表达字符可以在结果中重现
SQL> select to_char(sysdate,'yyyy"year"mm-dd;') from dual;
TO_CHAR(SYSDATE,'YYYY"YEAR"MM-DD;')
------------------------------------------
2015year02-24;
2、年的显示,SYEAR/YEAR字符显示年,SYYYY/YYYY显示公元数值年,Y,YYY 以逗号分隔的年显示方式,IYYY/IYY/IY/I显示年后几位数值,RR/RRRR数值显示年, B.C.公元前, A.D.公元 SCC/CC 世纪,如果年的后两个数值是01~99,则世纪值=年的前两个值加一,否则与年前两个值相同。AM(A.M.)/PM(P.M.)显示上午还是下午
SQL> select to_char(sysdate,'SYEAR,YEAR') from dual;
TO_CHAR(SYSDATE,'SYEAR,YEAR')
--------------------------------------------------------------------------------
TWENTY FIFTEEN,TWENTY FIFTEEN
SQL> select to_char(sysdate,'SYYYY,YYYY,Y,YYY,IYYY,IYY,IY,I:RR,RRRR:B.C.,A.D.,SCC,CC,AM,P.M.') from dual;
TO_CHAR(SYSDATE,'SYYYY,YYYY,Y,YYY,IYYY,IYY,IY,I:RR,RRRR:B.C.,A.D.,SCC,CC,AM,P.M.
--------------------------------------------------------------------------------
2015,2015,2,015,2015,015,15,5:15,2015:A.D.,A.D., 21,21,PM,P.M.
3、月的显示, MM数值显示月份,MON字符显示月份,MON完整字符显示月份,RM罗马字母显示月份。
SQL> select to_char(sysdate,'MM,MON,MONTH,RM') from dual;
TO_CHAR(SYSDATE,'MM,MON,MONTH,RM')
--------------------------------------------------------------------------------
02,FEB,FEBRUARY ,II
4、天的显示,D 一周中的天数,DAY 天的名称,DD 月中的天数,DDD表示年中的天数,DY以缩写的星期显示。
SQL> select to_char(sysdate,'D,DAY,DD,DDD,DY') from dual;
TO_CHAR(SYSDATE,'D,DAY,DD,DDD,DY')
--------------------------------------------------------------------------------
3,TUESDAY ,24,055,TUE
5、周显示,IW年中的周(1-53),WW年中的周以当年的第一天算第一周,W月中的周,以第每个月头一天算第一周。
SQL> select to_char(sysdate,'IW,WW,W') from dual;
TO_CHAR(SYSDATE,'IW,W
---------------------
09,08,4
6、时间格式 DL以长时间格式显示,DS以短时间格式显示,这两者取决于NLS_TERRITORY和NLS_LANGUAGE两个参数配置,不同地区显示的格式不一样。E,EE分别以缩写和全称的方式显示时代。
SQL> select to_char(sysdate,'DL:DS') from dual;
TO_CHAR(SYSDATE,'DL:DS')
--------------------------------------------------------------------------------
Tuesday, February 24, 2015:2/24/2015
7、小时 HH/HH12以12小时显示,HH24以24小时显示。
SQL> select to_char(SYSTIMESTAMP,'HH,HH12,HH24') from dual;
TO_CHAR(SYSTIMESTAMP,'HH
------------------------
01,01,13
8、分钟MI
SQL> select to_char(systimestamp,'MI') from dual;
TO_CHA
------
13
9、秒数 SS显示秒数,FF显示毫秒精确度[1~9],FM让返回的值没有前后空格,FX精确匹配日期格式类型。
SQL> select to_char(SYSTIMESTAMP,'SS.FF3,SSSSS') from dual;
TO_CHAR(SYSTIMESTAMP,'SS.FF3,SSSSS')
------------------------------------------------------
58.180,49438
10、其他 TS短格式显示时间,TZD白天即使,TZH区域小时,TZM区域分钟,TZR时间区域信息,X小数点,Q季度。
SQL> select to_char(systimestamp,'TS,TZD,TZH,TZM,TZR') from dual;
TO_CHAR(SYSTIMESTAMP,'TS,TZD,TZH,TZM,TZR')
--------------------------------------------------------------------------------
2:09:27 PM,,+08,00,+08:00
SQL> select to_char(systimestamp,'XQ') from dual;
TO_CHA
------
.1
11、计算时间差
年份差
select floor(to_number(sysdate-to_date('01-31-1999','MM-DD-YYYY'))/365) as "YEARS" FROM DUAL;
月份差
select months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')) "MONTHS" FROM DUAL;
select ceil(months_between(to_date('01-31-1999','MM-DD-YYYY'),to_date('12-31-1998','MM-DD-YYYY')))"MONTHS" FROM DUAL;
天数差(时*24,分24*60,以此类推)
select floor(to_number(sysdate-to_date('01-31-1999','MM-DD-YYYY'))) as "YEARS" FROM DUAL;
通过EXTRACT()获取精准的时间
SQL> SELECT EXTRACT(MINUTE FROM TIMESTAMP '2001-02-16 2:38:40') from dual;
EXTRACT(MINUTEFROMTIMESTAMP'2001-02-162:38:40')
-----------------------------------------------
38
通过NEXT_DAY()函数获取未来时间,这里1-7分别表示从日、一、二、三、四、五、六
SQL> select sysdate,next_day(sysdate,6) from dual;
SYSDATE NEXT_DAY(SYSDATE,6)
------------------- -------------------
2015-03-09 12:44:02 2015-03-13 12:44:02
查看有关时间的环境参数设置:
SQL> col PARAMETER for a30
SQL> col VALUE for a40
SQL> select * from nls_session_parameters;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY AMERICA
NLS_CURRENCY $
NLS_ISO_CURRENCY AMERICA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
NLS_DATE_LANGUAGE AMERICAN
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY $
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE