2017-06-12 61 views
1

我有如下表:在MySQL查詢獲取單元格的值,其中日期

----------------------------- 
| id | deadline | Notify | 
----------------------------- 
| 1 | 2017-06-16 | 4  | // true 
| 2 | 2017-06-17 | 5  | // true 
| 3 | 2017-06-18 | 5  | // false -> tomorrow 
| 4 | 2017-06-19 | 6  | // false -> tomorrow 
----------------------------- 

的通知欄在截止日期前提交的日子,通知應發送。

使用下面的查詢給了我5天

所有期限的記錄
SELECT * FROM `issues` WHERE deadline = DATE(NOW() + INTERVAL 5 DAY) 

我如何使用同一行的小區信息?那麼,在這個例子中,我得到了行#1和#2?

+3

注意,截止日期是日期,所以DATE()是多餘的。同樣,CURDATE()是DATE(NOW()) – Strawberry

+0

@Strawberry好的信息,謝謝! –

+0

@Strawberry你很棒。我一直在看你正在提供很好的獨家。 – Santosh

回答

2

試試這個:

SELECT * 
FROM issues 
WHERE deadline - INTERVAL Notify DAY <= NOW() 

上述查詢返回行1, 2。如果你想用true, false標誌返回所有行,那麼你可以試試下面的查詢:

SELECT *, 
     IF(deadline - INTERVAL Notify DAY <= NOW(), true, false) AS flag 
FROM issues 

Demo here

+0

謝謝,不知道我可以在那裏使用列名。 –

0

的截止日期 - 當前日期給出了到期前的天數。因此,嘗試

SELECT * FROM `issues` WHERE DATE(deadline) - DATE(NOW()) <= 5