如何解决以下代码不是Oracle中的有效月份错误
我收到以下代码的“无效月份”错误:
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;
解决方法
我在这里看不到使用extract()
的意义。这是次优的,因为数据库需要先将该函数应用于列中的所有值,然后才能进行过滤。我建议针对文字日期直接过滤:
where hire_date >= date '1999-01-01'
此谓词将利用hire_date
上的索引。您甚至可以在索引中添加更多列,以完全覆盖查询,例如:(hire_date,last_name,employee_id)
。
假设这是Oracle教程中的with recursive cte (sub_category_id,category_id) as
(
select
sub_category_id,category_id
from category_table
where category_id = 3267
union all
select
ct.sub_category_id,ct.category_id
from category_table ct
inner join cte on ct.category_id = cte.sub_category_id
)
select sub_category_id as leaf_id
from cte
where sub_category_id not in (select distinct category_id from category_table)
表,employees
已经是hire_date
列。您无需在其上使用date
:
to_date
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。