从sql中的当前日期获取最近90天的记录

时间:2013-05-10 09:23:44

标签: sql oracle date

您正在使用以下查询从当前日期过去90天检索记录,但它不起作用。请帮帮我。

SELECT * 
FROM adhoc_request 
WHERE DATEDIFF(("d", Crdate, current_date()) < 90);

4 个答案:

答案 0 :(得分:7)

SELECT * 
FROM adhoc_request 
WHERE Crdate >= sysdate-90

SYSDATE包括时间部分,例如“04-13-2013 09:45:51”

因此,实际上,在“04-13-2013 09:45:51”上运行的查询转换为

WHERE Crdate >= "2013-01-13 09:45:51"

大卫的建议工作更加可预测,并且在大多数情况下更正确,首先截断SYSDATE以便在离开它90天之前返回今天的日期,即

SELECT * 
FROM adhoc_request 
WHERE Crdate >= TRUNC(sysdate)-90

答案 1 :(得分:1)

请在下面查询oracle

SELECT 
    * 
FROM 
    adhoc_request 
WHERE 
    trunc(sysdate-Crdate)<90

答案 2 :(得分:1)

select *
from adhoc_request
where Crdate < DATEADD("d", -90, current_date()) < 90);

一些注意事项:

  • 永远不要在WHERE子句中对谓词使用函数。注意我的代码中单独使用CrDate
  • DATEADD将提取90天,包括时间。 DATEDIFF计算午夜边界

答案 3 :(得分:1)

 Where trunc(Crdate) BETWEEN (trunc(sysdate)-INTERVAL '90' DAY) AND trunc(sysdate)