mysql选择curdate

时间:2012-01-19 14:20:42

标签: 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

我需要检查一下,本月我需要访问哪些用户。 示例:此用户访问了d / m / y 19/12/2011,并在下次访问时参与了19/01/2012。 上次访问是在2012年1月20日,下一次访问是在2012年4月19日进行的。

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

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

用户被列出是因为过去安排在1月份。

1月份,不应列出此用户,因为上次安排的日期是2012-04-20。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分: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())