这里有一张表:
orders(id, item, deliveryDate, courier_id)
我想编写一个查询,返回给定快递员在今天一个月之内的所有订单。我该怎么做?
大多数服务器使用日期的整数部分表示天数。
在这个例子中,我使用"Now()"作为一个服务器函数,返回当前日期。你应该在你所使用的服务器文档中查找正确的函数。
(同时将问号标记为快递ID的值)
Select *
From orders
Where Now() - deliveryDate < 30
And courier_id = ?
如果是MySQL
SELECT * FROM orders WHERE deliveryDate BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 1 MONTH);
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
。
dateadd(MONTH,1,getdate())
代替getdate()+ 30
。 - user287466