如何在甲骨文日期中选择实际年份



我需要选择今年在公司注册的员工;该字段是日期类型(字段名称:d atemp),所以我使用了:

SELECT employee_name 
FROM employees 
WHERE datemp BETWEEN to_date(01-JAN-2015) AND to_date (31-DEC-2015)

有没有另一种方法可以说具有日期类型的字段的年份在实际年份中?

你可以从sysdate中提取它

SELECT employee_name 
FROM employees 
WHERE EXTRACT(year FROM datemp) = EXTRACT(year FROM sysdate)

你总是可以做:

select employee_name
from   emploees
where  trunc(datemp, 'yyyy') = to_date('01/01/2015', 'dd/mm/yyyy'); -- or trunc(sysdate, 'yyyy') if you need it to refer to this year

(甚至... to_char(datemp, 'yyyy') = '2015';

请记住,如果您在 datemp 列上使用函数,则该列上的任何索引将不再使用(除非存在与列上的新函数匹配的基于函数的索引)。

如果datemp列上有索引,则使用范围扫描可能会更好地执行,具体取决于表中有多少年的数据:

SELECT employee_name
FROM employees
WHERE datemp >= TRUNC(SYSDATE,'YYYY')
AND datemp < ADD_MONTHS(TRUNC(SYSDATE,'YYYY'),12);

(但是,实际上它的日期范围非常大,无论如何可能仍然会进行全表扫描。

最新更新