我有一个包含日期列的表格。我需要根据它从中获取记录 给定的日期。
目前我使用的是查询:
select * from workingemployee_data where created_date like '20-Jan-2012'
我正在获取那些在2012年1月20日创建了_date的记录
但是我希望得到那些在给定日期前10天创建的记录 日期(即)2012年1月20日。
请在此建议我。
答案 0 :(得分:4)
这提供了今天和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
替换为确切的日期。
答案 1 :(得分:4)
like
而非=
?created_date
的类型为DATE
,根据NLS_DATE_FORMAT
依赖隐式转换是不好的做法(这是比较日期和字符串时会发生的情况)dd-mon-yyyy
不是一种很好的查询格式,因为它会根据NLS_LANGUAGE
更好地使用mm
来表示月数所以,要么使用@mvp's answer,要么做这样的事情:
SELECT *
FROM workingemployee
WHERE trunc(created_date) = to_date('20-01-2013', 'dd-mm-yyyy') - 10
答案 2 :(得分:1)
SELECT * 来自workingemployee WHERE created_date> sysdate - INTERVAL' 10' DAY;