这是一张表:
orders(id, item, deliveryDate, courier_id)
我想写一个查询,它将返回给定快递的所有订单,其交货日期在一个月之内。我该怎么做?
答案 0 :(得分:1)
大多数服务器使用日期的整数部分作为日期。
在这个例子中,我使用“Now()”作为返回当前日期的服务器函数。 您应该在您使用的服务器的文档中看起来正确。
(也作为courier id值的?标记)
Select *
From orders
Where Now() - deliveryDate < 30
And courier_id = ?
如果您的服务器没有天数 - 您可以查看它的日期转换功能
答案 1 :(得分:0)
如果是MySQL
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
。