mysql选择curdate

mysql选择curdate,mysql,select,Mysql,Select,我有一张这样的桌子: 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 SELECT * FROM table_name WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR

我有一张这样的桌子:

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
SELECT *
FROM table_name
WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR(CURDATE())
我需要检查一下,这个月我需要访问哪些用户。 示例:该用户于2011年12月19日访问了d/m/y,并计划于2012年1月19日进行下一次访问。 最后一次访问是在2012年1月20日,下一次访问计划在2012年4月19日进行

问题是:月份现在是一月=1,我想显示我这个月需要访问的所有用户。 当我使用SQL select语句时,如下所示:

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
SELECT *
FROM table_name
WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR(CURDATE())
用户之所以被列出,是因为在过去,用户被安排在1月份


在1月份,不应列出此用户,因为最后一个计划日期是2012-04-20。

此SQL查找本月具有
dtn
的行,这些行在同一个月内没有任何与
dt
对应的行:

SELECT *
FROM table_name
WHERE MONTH(dtn) = MONTH(CURDATE()) AND YEAR(dtn) = YEAR(CURDATE())AND  (dtn>=CURDATE())
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())