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

时间:2011-03-11 23:56:26

标签: sql tsql datetime date

这是一张表:

orders(id, item, deliveryDate, courier_id)

我想写一个查询,它将返回给定快递的所有订单,其交货日期在一个月之内。我该怎么做?

3 个答案:

答案 0 :(得分:1)

大多数服务器使用日期的整数部分作为日期。

在这个例子中,我使用“Now()”作为返回当前日期的服务器函数。 您应该在您使用的服务器的文档中看起来正确。

(也作为courier id值的?标记)

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

如果您的服务器没有天数 - 您可以查看它的日期转换功能

答案 1 :(得分:0)

如果是MySQL

DATE_ADD

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

答案 2 :(得分:0)

在T-SQL中:

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

修改

虽然这个解决方案的时间计算大约是一个月,但不是一个月,因为叔叔布拉德已经整齐地观察到了。如果您需要精确,您应该从当前日期计算一个月,如下所示:DATEADD(month, 1, GETDATE())。这将替换上述查询中的GETDATE() + 30