如何使用日期格式在oracle中使用To_date函数?

时间:2020-10-06 10:37:54

标签: sql oracle

在SQL开发人员中,我将exp_date列作为日期格式,并且NLS值为DD-MON-YYYY HH24:MI:SS, 我正在使用选择to_date(exp_date,'DD-MON-YYYY HH24:MI:SS') from demo;

如果to_date函数仅接受字符串作为参数,为什么我没有遇到任何错误。

1 个答案:

答案 0 :(得分:2)

Oracle尝试提供帮助,并将exp_date隐式转换为字符串,以匹配TO_DATE的预期第一个参数。因此,您的查询:

select to_date(exp_date,'DD-MON-YYYY HH24:MI:SS') from demo;

等效于此查询中更明确的日期到字符串的转换:

SELECT TO_DATE(
         TO_CHAR(
           exp_date,
           ( SELECT value
             FROM   NLS_SESSION_PARAMETERS
             WHERE  parameter = 'NLS_DATE_FORMAT'
           )
         ),
         'DD-MON-YYYY HH24:MI:SS'
       )
FROM   demo;

其中exp_date值已强制转换为字符串。之所以起作用,是因为NLS_DATE_FORMATTO_DATE的格式模型是相同的。