https://docs.oracle.com/cd/B19306_01/server.102/b14200/functions183.htm
TO_DATE(char [, fmt [, 'nlsparam' ] ])
参数
该TO_DATE()
函数接受三个参数:
1) char
是一个字符串值,它被转换为一个DATE
值。它可以是任何数据类型CHAR,VARCHAR2,NCHAR或NVARCHAR2的值。
2) fmt
是的日期和时间格式string
。
该fmt 参数是可选。如果忽略则取决于默认日期格式
默认日期格式由NLS_TERRITORY
初始化参数隐式确定,或者可以由NLS_DATE_FORMAT
参数显式设置。
该'nlsparam'
函数在此函数中的TO_CHAR
作用与日期转换函数中的作用相同。
fmt的理解请参考上一篇https://blog.csdn.net/uotail/article/details/83150030
3) 'nlsparam'
是一个表达式,用于指定日期和月份名称的语言string
。该nls_language
参数具有以下形式:
1 | NLS_DATE_LANGUAGE = language |
这个'nlsparam'参数是可选的。如果省略它,该TO_DATE()
函数将使用会话的默认语言。
返回值
该TO_DATE()
函数返回一个DATE
与输入字符串对应的值。
以下示例将字符串转换为日期:
SELECT TO_DATE('January 15, 1989, 11:00 A.M.','Month dd, YYYY, HH:MI A.M.','NLS_DATE_LANGUAGE = American') FROM DUAL;
如果NLS_TERRITORY
参数设置为' AMERICA
',则返回的值反映默认日期格式。不同的NLS_TERRITORY
值会导致不同的默认日期格式:
ALTER SESSION SET NLS_TERRITORY = 'KOREAN';
SELECT TO_DATE( 'January 15, 1989, 11:00 A.M.','Month dd, YYYY, HH:MI A.M.','NLS_DATE_LANGUAGE = American') FROM DUAL;
例子
select to_date('2018-10-18 21:01:52','YYYY-MM-DD HH24:MI:SS') from dual
SELECT TO_DATE( '5 Jan 2017', 'DD MON YYYY','NLS_DATE_LANGUAGE = American' ) FROM dual;