在SQL开发人员中,我将exp_date列作为日期格式,并且NLS值为DD-MON-YYYY HH24:MI:SS
,
我正在使用选择to_date(exp_date,'DD-MON-YYYY HH24:MI:SS') from demo;
如果to_date函数仅接受字符串作为参数,为什么我没有遇到任何错误。
答案 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_FORMAT
和TO_DATE
的格式模型是相同的。