【发布时间】:2020-12-15 01:50:41
【问题描述】:
我收到以下代码的“不是有效月份”错误:
SELECT last_name, employee_id, hire_date
FROM employees
WHERE EXTRACT(YEAR FROM TO_DATE(hire_date, 'DD-MON-RR')) > 1998
ORDER BY hire_date;
【问题讨论】:
-
hire_date是什么数据类型? -
@TBose 你永远不应该在已经是 DATE 数据类型的东西上使用
to_date(),因为我怀疑你在这里做。当您这样做时,Oracle 会这样做:to_date(to_char(<DATE value>, <NLS_DATE_FORMAT parameter value>), <supplied format, or if none supplied, NLS_DATE_FORMAT parameter value>)。永远不要这样做,因为您可能在隐式转换之间存在冲突的格式(就像您在此处所遇到的那样),您可能会丢失信息或获取错误的信息,并且您会迫使数据库执行不必要的工作。
标签: sql oracle datetime query-optimization where-clause