如何根据oracle数据库中的日期检索记录

时间:2013-02-03 08:19:58

标签: sql oracle

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

目前我使用的是查询:

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

我正在获取那些在2012年1月20日创建了_date的记录

但是我希望得到那些在给定日期前10天创建的记录 日期(即)2012年1月20日。

请在此建议我。

3 个答案:

答案 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)

  1. 为什么使用like而非=
  2. 假设created_date的类型为DATE,根据NLS_DATE_FORMAT依赖隐式转换是不好的做法(这是比较日期和字符串时会发生的情况)
  3. dd-mon-yyyy不是一种很好的查询格式,因为它会根据NLS_LANGUAGE更好地使用mm来表示月数
  4. 所以,要么使用@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;

相关问题