2

我有一个带有日期列的表格。我需要根据给定的日期从中获取记录。

目前,当我使用查询时:

select * from workingemployee_data where created_date like '20-Jan-2012'

我得到了那些在 2012 年 1 月 20 日创建日期的记录

但我想获取那些在给定日期(即 2012 年 1 月 20 日)前 10 天创建的记录。

请就此向我提出建议。

4

3 回答 3

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如果需要,请替换为确切的日期。

于 2013-02-03T08:26:28.987 回答
4
  1. 你为什么用like而不用=
  2. 假设它created_date是 type DATE,依赖于隐式转换是不好的做法NLS_DATE_FORMAT(这是比较日期和字符串时发生的情况)
  3. dd-mon-yyyy不是一种很好的查询格式,因为它根据月份数字的NLS_LANGUAGE更好使用而有所不同mm

所以,要么使用@mvp 的答案,要么做这样的事情:

SELECT *
FROM workingemployee
WHERE trunc(created_date) = to_date('20-01-2013', 'dd-mm-yyyy') - 10
于 2013-02-03T08:41:40.197 回答
1

SELECT * FROM workingemployee WHERE created_date > sysdate - INTERVAL '10' DAY;

于 2015-10-20T09:39:31.273 回答