SQL Select 基于当前日期减去两天的记录

SQL Select Records based on current date minus two days

我有一个订单 table,其中包含订单 ID、订单日期和订单描述。

我想 运行 一个 select 查询来捕获过去两天内创建的所有订单。所以当前日期减去两天。从 12 月 14 日开始,我想要 select 所有订单日期 > 12 月 13 日的订单。这需要使用获取日期函数来获取当前日期并减去天数。

我试过:

select * from orders where orderdate > getdate() - 2 

但这并没有产生正确的结果。请问知道怎么做吗?

试试这个:

select * from orders where orderdate > cast(getdate() - 1 as date)

你应该尝试使用 dateadd 函数

select * from orders where orderdate > dateadd(dd,-1,cast(getdate() as date))

现在这可能正是您所需要的,但是您需要了解,通过强制转换为日期,我们删除了时间部分并有效地返回到一天的开始,而在它后面的一天 (-1) 给出了开始昨天

看来 dateadd 和 convert 可以解决问题。

select   o.*
from     orders o
where    o.orderdate >= dateadd(day, -2, convert(date, getdate()))

如果您想要最近两天的订单,请使用 DATEADD 将天数添加到今天的日期(在您的情况下为 -2 天),然后使用 DATEDIFF 比较这两天:

SELECT * FROM orders
WHERE DATEDIFF(DAY, DATEADD(DAY, -2, GETDATE()), orderdate) > 0

现在,假设所有订单都有过去的日期和 none 未来的日期(应该是这样),您可以像这样简单地使用 DATEDIFF

SELECT * FROM orders
WHERE DATEDIFF(DAY, orderdate, GETDATE()) <= 2

注意:您可以使用 < 3 代替 <= 2