TO_CHAR、TO_DATE函数的详细用法
(一)FMT格式:
1、SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh24:mi:ss') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH2
------------------------------
2010-01-27 22:02:00
2、d:一周的第几天
SQL> SELECT TO_CHAR(SYSDATE,'d') FROM dual;
TO_CHAR(SYSDATE,'D')
--------------------
4
3、day:一周的星期几(英文全写)
SQL> SELECT TO_CHAR(SYSDATE,'Day') FROM dual;
TO_CHAR(SYSDATE,'DAY')
----------------------
星期三
若是英文,则显示wednesday
dy:一周的星期几(英文简写)
SQL> SELECT TO_CHAR(SYSDATE,'DY') FROM DUAL;
TO_CHAR(SYSDATE,'DY')
---------------------
星期三
若是英文,则显示wed
4、dd:一月的第几天
SQL> SELECT TO_CHAR(SYSDATE,'Dd') FROM dual;
TO_CHAR(SYSDATE,'DD')
---------------------
27
5、ddd:一年的第几天
SQL> SELECT TO_CHAR(SYSDATE,'DDD') FROM DUAL;
TO_CHAR(SYSDATE,'DDD')
----------------------
027
6、YYYY 四位年份 、YYY三位年份,YY二位年份,Y 一位年份
7、 HH /HH12,按12小时计 1:00:00~12:59:59。
HH24 ,按24小时计 0:00:00~23:59:59 。
MI:分 0~59。SS:秒 0~59。
8、MM:两位月 显示月:01 MON(英文简写):字符集表示 显示月:1月,若是英文版,显示jan
MONTH(英文全写) 字符集表示 显示月:1月,若是英文版,显示january
SQL> SELECT TO_CHAR(SYSDATE,'mm') FROM DUAL;
TO_CHAR(SYSDATE,'MM')
---------------------
01
SQL> SELECT TO_CHAR(SYSDATE,'mon') FROM DUAL;
TO_CHAR(SYSDATE,'MON')
----------------------
1月
SQL> SELECT TO_CHAR(SYSDATE,'month') FROM DUAL;
TO_CHAR(SYSDATE,'MONTH')
------------------------
1月
9 、Q:季度 表示值:1、2、3、4
SQL> SELECT TO_CHAR(sysdate,'Q') FROM DUAL;
TO_CHAR(SYSDATE,'Q')
--------------------
1
10、W:一月的第几周
SQL> SELECT TO_CHAR(SYSDATE,'W') FROM DUAL;
TO_CHAR(SYSDATE,'W')
--------------------
4
11、WW:一年的第几周
SQL> SELECT TO_CHAR(SYSDATE,'WW') FROM DUAL;
TO_CHAR(SYSDATE,'WW')
---------------------
04
12、分隔符:-、/、,、:、;、.。共6个,可互相套用。
exp1 : SQL> SELECT TO_CHAR(SYSDATE,'yyyy/mm/dd hh/mi/ss') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY/MM/DDHH/
------------------------------
2010/01/30 02/46/16
exp2: SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh/mi/ss') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH/
------------------------------
2010-01-30 02/47/38
exp3: SQL> SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd hh-mi-ss') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MM-DDHH-
------------------------------
2010-01-30 02-47-52
exp4: SQL> SELECT TO_CHAR(SYSDATE,'yyyy,mm,dd hh,mi,ss') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY,MM,DDHH,
------------------------------
2010,01,30 02,51,15
exp5: SQL> SELECT TO_CHAR(SYSDATE,'YYYY:MM:DD:HH:MI:SS') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY:MM:DD:HH
------------------------------
2010:01:30:02:52:46
exp6: SQL> SELECT TO_CHAR(SYSDATE,'YYYY;MM;DD;HH;MI;SS') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY;MM;DD;HH
------------------------------
2010;01;30;02;53;53
exp7:SQL> SELECT TO_CHAR(SYSDATE,'YYYY.MM.DD:HH:MI:SS') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY.MM.DD:HH
------------------------------
2010.01.30:02:54:45
(二)TO_CHAR(date[,fmt,[,nls_param]])
fmt,nls_param为可选项,fmt指定了要转化的格式,nls_param指定了返回日期所使用的语言,
格式为:'nls_date_language=language'
如:'nls_date_language=simplified chinese'、'nls_date_language=japanese'、'nls_date_language=english'
注:如果没有指定fmt和nls_param,则按oracle的默认模式处理。
例1、
SQL> SELECT TO_CHAR(SYSDATE) FROM DUAL;
TO_CHAR(SYSDATE)
----------------
30-1月 -10
例2、
SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MON-DD HH24:MI:SS DAY') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MON-DDHH
-----------------------------------
2010-1月 -30 03:16:21 星期六
例3、
SQL> SELECT TO_CHAR(SYSDATE,'YYYY-MON-DD HH24:MI:SS DAY','nls_date_language=ENGLISH') FROM DUAL;
TO_CHAR(SYSDATE,'YYYY-MON-DDHH
-------------------------------------
2010-JAN-30 03:17:11 SATURDAY
(三)TO_DATE(char[,fmt[,nls_param]])
其中fmt、nls_param参照TO_CHAR(date[,fmt[,nls_param]])函数
例1:
SQL> SELECT TO_DATE('2010-1月-30 3:43:50','YYYY-MONTH-DD HH:MI:SS') FROM DUAL;
TO_DATE('2010-1月-303:43:50','
------------------------------
2010-1-30 3:43:50
例2、
SQL> SELECT TO_DATE('2010-01-30','YYYY-MM-DD') FROM DUAL;
TO_DATE('2010-01-30','YYYY-MM-
------------------------------
2010-1-30
例3、
SQL> SELECT TO_DATE('2010-01-30','YYYY-MON-DD') FROM DUAL;
SELECT TO_DATE('2010-01-30','YYYY-MON-DD') FROM DUAL
ORA-01843: 无效的月份
例4、
SQL> SELECT TO_DATE('2010-1月-30','YYYY-MON-DD') FROM DUAL;
TO_DATE('2010-1月-30','YYYY-MO
------------------------------
2010-1-30
例5、
SQL> SELECT TO_DATE('2010-1月-30','YYYY') FROM DUAL;
SELECT TO_DATE('2010-1月-30','YYYY') FROM DUAL
ORA-01830: 日期格式图片在转换整个输入字符串之前结束
例6、
SQL> SELECT TO_DATE('2010-january-30 3:43:50','YYYY-MONTH-DD HH:MI:SS') FROM DUAL;
SELECT TO_DATE('2010-january-30 3:43:50','YYYY-MONTH-DD HH:MI:SS') FROM DUAL
ORA-01843: 无效的月份
例7、
SQL> SELECT TO_DATE('2010-january-30 3:43:50','YYYY-MONTH-DD HH:MI:SS','nls_date_language=English') FROM DUAL;
TO_DATE('2010-JANUARY-303:43:5
------------------------------
2010-1-30 3:43:50
注:在使用TO_DATE(char[,fmt[,nls_param]])函数时应注意char、fmt、nls_param之间的对应关系。