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

在sql中获取从当前日期算起最近90天的记录,sql,oracle,date,Sql,Oracle,Date,您好,我正在使用下面的查询检索自当前日期起90天内的记录,但它不起作用。请帮帮我 SELECT * FROM adhoc_request WHERE DATEDIFF(("d", Crdate, current_date()) < 90); 选择* 从临时请求 其中DATEDIFF((“d”,Crdate,current_date())小于90); 请尝试下面的oracle查询 SELECT * FROM adhoc_request WHERE tr

您好,我正在使用下面的查询检索自当前日期起90天内的记录,但它不起作用。请帮帮我

SELECT * 
FROM adhoc_request 
WHERE DATEDIFF(("d", Crdate, current_date()) < 90);
选择*
从临时请求
其中DATEDIFF((“d”,Crdate,current_date())小于90);

请尝试下面的oracle查询

SELECT 
    * 
FROM 
    adhoc_request 
WHERE 
    trunc(sysdate-Crdate)<90
选择
* 
从…起
临时请求
哪里
trunc(sysdate Crdate)
select*
从临时请求
式中,Crdate<日期添加(“d”,-90,当前日期())<90);
一些注意事项:

  • 不要在WHERE子句中的谓词上使用函数。注意:CrDate在我的代码中是唯一的
  • DATEADD将精确提取90天,包括时间。DATEDIFF计算午夜边界
包括时间部分,例如“04-13-2013 09:45:51”

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

WHERE Crdate >= "2013-01-13 09:45:51"
David的建议更具可预测性,在大多数情况下更为正确,它首先截断SYSDATE以返回今天的日期,然后再停止90天,即

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

您好,我尝试执行这个查询IM得到下面的错误,并考虑使用Tunc(SysDead)-90,如果您只想考虑完整的天。DATEADOD在Oracle中不可用。SQL标记不表示SQL Server的问题。对不起,如果我的评论冒犯了您——但是DATEADDATA()是一个SQL Server函数(而CurrurnSee显然是MySQL),所以我假设您的解决方案仅为SQL server。我确实认为MySQL,但MySQL使用DATE\u ADD。我没有检查语法。我有时会被方言弄混
WHERE Crdate >= "2013-01-13 09:45:51"
SELECT * 
FROM adhoc_request 
WHERE Crdate >= TRUNC(sysdate)-90
 Where trunc(Crdate) BETWEEN (trunc(sysdate)-INTERVAL '90' DAY) AND trunc(sysdate)