我有一张这样的表:
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。
答案 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())