oracle 时间函数 TO_DATE
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;