2012-01-19 61 views
0

我有這樣的一個表:MySQL的選擇CURDATE

SELECT * 
FROM `table_name` 
ORDER BY `table_name`.`dtn` DESC 
LIMIT 0 , 30 

id  dt   dtn 
23 2012-01-20 2012-04-20 
22 2011-12-19 2012-01-19 

我需要檢查,該用戶是否需要在本月訪問。 示例:此用戶在2011年12月19日的d/m/y上訪問,並且爲下次訪問19/01/2012做準備。 上次訪問時間爲20/01/2012,下一次訪問時間爲19/04/2012。

問題:月份現在是1月= 1,我想顯示我需要訪問本月的所有用戶。 當我使用SQL SELECT語句是這樣的:

SELECT * 
FROM table_name 
WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR(CURDATE()) 

用戶因爲在過去的上市定於一月。

1月,該用戶不應該被列出,因爲上次預定日期是2012-04-20。

回答

0
SELECT * 
FROM table_name 
WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR(CURDATE())AND (dtn>=CURDATE()) 
0

這SQL找到與這個月dtn行沒有在同一個月內的任何對應的行與dt

SELECT * 
FROM table_name t1 
LEFT OUTER JOIN 
table_name t2 
ON 
t1.dtn = t2.dt AND t2.dt IS NULL 
WHERE MONTH(t1.dtn) = MONTH(CURDATE()) AND YEAR(t1.dtn) = YEAR(CURDATE())