#DATE
DATE函数有1或2个参数。当只有一个expr参数时,DATE函数将expr的值按照配置参数DATE_FORMAT指定格式进行DATE类型转换;当有两个参数时,DATE函数将expr的值按照第二个参数format进行格式转换。
表达式expr的数据类型须为DATE/TIMESTAMP/TIME类型,内容不论是否符合date_format或format格式,都返回正确结果。
当expr的值为NULL时,函数返回NULL。
format
指定转换的格式,包括如下字符组合:
- 年:'YYYY'、'Y'、'YY'、'YYY'
- 月:'MM'、'MON'、'MONTH'
- 日:'DD'
- 周:'W'、'DAY'、'D'
- 时:'HH'、'HH24'
- 分:'MI'
- 秒:'SS'
- 连接字符:':', '-', '/', '.', ',', ';', '\', '_', ' '
- ':', '-', '/', '.', ',', ';', '\', '_':八种连接符相互一对一兼容匹配
- ' ':忽略所有空格,空格不参与匹配
不指定format时,系统按DATE类型指定的默认格式进行转换,如果expr内容不符合默认格式,返回格式匹配错误。
示例
SELECT DATE( 'January 15, 1989, 11:00 A.M.', 'Month dd, YY, HH:MI A.M.' ) res FROM DUAL;
RES
--------------------------------
1989-01-15 11:00:00
SELECT DATE( '1989/2/23', 'YYYY/MM/DD HH24:MI:SS' ) res FROM DUAL;
RES
--------------------------------
1989-02-23 00:00:00
SELECT DATE( '1989/2/23' ) res FROM DUAL;
RES
--------------------------------
1989-02-23
--不兼容匹配默认DATE格式'YYYY-MM-DD'时,返回错误
SELECT DATE( '1989//2/23' ) res FROM DUAL;
[1:16]YAS-00008 type convert error : literal does not match format string