SQL 根据当前日期减去两天选择记录

新手上路,请多包涵

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

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

我努力了:

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

但这并没有产生正确的结果。请问有什么办法吗?

原文由 Emma 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答

你应该尝试使用 dateadd 功能

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

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

原文由 DhruvJoshi 发布,翻译遵循 CC BY-SA 4.0 许可协议

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

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

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

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

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

原文由 Racil Hilan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进