试图在MySQL选择查询中解决条件的日期

时间:2012-05-23 01:50:29

标签: mysql sql date

我正在尝试列出仍可以选择发货的即将发货。这些交付中的每一个都需要一定的交货时间 - 因此,如果您在前一天下午5点订购,那么预计明天交货是不现实的。

deliveryies表定义了一个“leadTime”,它是一个整数天,也是一个“nextDate”,它包含一个“YYYY-MM-DD”格式的日期字段。我需要过滤掉“nextDate”至少一天之外的行 - 或者更确切地说,如果在上午10点之前离开一天,如果在上午10点之后过去两天。

SELECT d.* FROM delivery d
WHERE d.nextDate >= DATE_ADD( CURRENT_DATE, INTERVAL d.leadTime DAY )
ORDER BY d.nextDate ASC, d.id ASC

例如,(假设一天的提前时间)。如果是星期三上午9点 - 我可以在周四看到所有的记录。但是,如果是星期三上午11点,我只能在星期五看到(因为它是在上午10点之后没有足够的时间准备)。

1 个答案:

答案 0 :(得分:3)

使用DATE(NOW() + INTERVAL 14 HOUR)代替CURRENT_DATE或将整个事物组合在一起:

SELECT   *
FROM     delivery
WHERE    nextDate >= DATE(NOW() + INTERVAL 14 HOUR + INTERVAL leadTime DAY)
ORDER BY nextDate ASC, id ASC