我有一个带有日期列的表格。我需要根据给定的日期从中获取记录。
目前,当我使用查询时:
select * from workingemployee_data where created_date like '20-Jan-2012'
我得到了那些在 2012 年 1 月 20 日创建日期的记录
但我想获取那些在给定日期(即 2012 年 1 月 20 日)前 10 天创建的记录。
请就此向我提出建议。
这给出了今天和 10 天前之间的所有记录:
SELECT *
FROM workingemployee
WHERE created_date BETWEEN sysdate - INTERVAL '10' DAY
AND sysdate
这给出了 10 天前输入的所有记录:
SELECT *
FROM workingemployee
WHERE created_date = sysdate - INTERVAL '10' DAY
sysdate
如果需要,请替换为确切的日期。
like
而不用=
?created_date
是 type DATE
,依赖于隐式转换是不好的做法NLS_DATE_FORMAT
(这是比较日期和字符串时发生的情况)dd-mon-yyyy
不是一种很好的查询格式,因为它根据月份数字的NLS_LANGUAGE
更好使用而有所不同mm
所以,要么使用@mvp 的答案,要么做这样的事情:
SELECT *
FROM workingemployee
WHERE trunc(created_date) = to_date('20-01-2013', 'dd-mm-yyyy') - 10
SELECT * FROM workingemployee WHERE created_date > sysdate - INTERVAL '10' DAY;