0

我正在尝试列出仍然可以选择运送的即将交付的货物。这些交付中的每一个都需要一定的交货时间 - 因此,如果您在前一天下午 5 点下订单,期望明天交货是不现实的。

交货表定义了一个“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 点之后,没有足够的时间准备)。

4

1 回答 1

3

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

SELECT   *
FROM     delivery
WHERE    nextDate >= DATE(NOW() + INTERVAL 14 HOUR + INTERVAL leadTime DAY)
ORDER BY nextDate ASC, id ASC
于 2012-05-23T01:54:40.380 回答