2012-05-23 46 views
0

我想列出即將發貨,仍然可以選擇運送。每次交付都需要一定的交貨時間 - 因此,如果您在前一天的下午5點訂購,那麼預計明天您的交貨將會到來,這是不現實的。試圖解決日期有條件的MySQL選擇查詢

遞送表定義了一個「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點以後沒有足夠的時間準備)才能看到

回答

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