2010-11-18 47 views
1

我有一張專門專用於DATETIME值的表(例如「2010-11-12 12:34:56」)。我試圖弄清楚如何選擇月份是本月之後的月份的所有行,同時還考慮到了年份更改(即如果當前月份是2010年12月,我想選擇2011年1月發佈的所有值)。如何形成MySQL查詢來檢索到下個月的值?

我很難搞清楚如何做到這一點。這是我選擇了當月的剩餘的所有值當前查詢:

$query = "SELECT * FROM mytable WHERE uid = " . $_SESSION['uid'] . " AND EXTRACT(YEAR FROM NOW()) = EXTRACT(YEAR FROM date_time) AND EXTRACT(MONTH FROM NOW()) = EXTRACT(MONTH FROM date_time) AND EXTRACT(DAY FROM NOW()) < EXTRACT(DAY FROM date_time) ORDER BY date_time"; 

我嘗試使用指南:http://dev.mysql.com/doc/refman/5.0/en/date-calculations.html(CURDATE和MOD),但我無法得到它的工作。 :(

任何幫助是非常讚賞

+0

看到http://stackoverflow.com/問題/ 3009896 /得到的第一個和最後一個下一個月的在mysql中 – 2010-11-18 13:52:53

回答

2
... WHERE YEAR(date_time) = YEAR(DATE_ADD(NOW(), INTERVAL 1 MONTH)) 
AND MONTH(date_time) = MONTH(DATE_ADD(NOW(), INTERVAL 1 MONTH)) 

這一個會更快,因爲它可以在日期時間字段利用現有的指標:

... WHERE date_time BETWEEN 
    DATE_SUB(DATE_ADD(NOW(), INTERVAL 1 MONTH),INTERVAL (DAY(NOW())-1) DAY) 
    AND 
    DATE_SUB(DATE_ADD(NOW(), INTERVAL 2 MONTH),INTERVAL (DAY(NOW())) DAY) 
+0

嗯,最後非常類似於鏈接問題的答案 – thomaspaulb 2010-11-18 14:02:35

+0

非常感謝,我會試試你的建議! – BeeDog 2010-11-18 14:35:47