2012-01-19 16 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)。 最後の訪問は2012年2月1日に行われ、次の訪問は19/04/2012にスケジュールされました。

問題:月がJANUARY = 1になりました。今月訪れる必要があるすべてのユーザーを表示したいと思います。 私はこのようなSQLのSELECT文を使用する場合:

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

を過去に1月を予定していたため、ユーザーがリストされています。

1月には、最終的な予定日が2012-04-20であるため、このユーザーはリストされません。

答えて

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

このSQLは、同じ月にdtで任意の対応する行を持っていないdtn今月で行を検索:

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())