检查日期是否接近今天的SQL查询

3

这里有一张表:

orders(id, item, deliveryDate, courier_id)

我想编写一个查询,返回给定快递员在今天一个月之内的所有订单。我该怎么做?


什么数据库?你尝试过什么吗? - Ilya Kogan
我相信这将取决于您使用的数据库管理系统。 - JOTN
3个回答

1

大多数服务器使用日期的整数部分表示天数。

在这个例子中,我使用"Now()"作为一个服务器函数,返回当前日期。你应该在你所使用的服务器文档中查找正确的函数。

(同时将问号标记为快递ID的值)

Select * 
From orders
Where Now() - deliveryDate < 30
And courier_id = ?

如果您的服务器没有保存日期 - 您可以查看其日期转换函数。

0

如果是MySQL

DATE_ADD

SELECT * FROM orders WHERE deliveryDate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 MONTH);

0

In T-SQL:

SELECT *
FROM orders
WHERE deliveryDate BETWEEN GETDATE() AND GETDATE() + 30
  AND courier_id = @CourierID

编辑

虽然此解决方案中的期间大约为一个月,但正如 Uncle Brad 所观察到的那样,它并不是精确的一个月。如果您需要精确计算,可以像这样从当前日期计算一个月:DATEADD(month, 1, GETDATE())。这将替换上述查询中的GETDATE() + 30


1
并非每个月都有30天。您应该使用dateadd(MONTH,1,getdate())代替getdate()+ 30 - user287466
@uncle brad:不一定。例如,如果我想将数据表示为图表,显示每天在未来一段时期内计划安排多少交货量,那么如果该时期是固定的,似乎更有意义。尽管如此,您的观点是正确的,因为实际上我们不知道这种情况的要求,所以我已经更新了我的答案。谢谢。 - Andriy M

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接