2011-01-11 1 views
0

現在の日付から1ヶ月先の日付を持つすべてのレコードをテーブル内で選択しようとしています。次の月に期限が到来するレコードを選択する


SELECT * from tablename WHERE renewalDate BETWEEN DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'EUR')) AND  DATE_ADD(DATE_FORMAT(CURDATE(),GET_FORMAT(DATE,'EUR')), INTERVAL 1 MONTH) 

をしかし、これは正しい結果を返しません:

日は、このDD-MM-YYYY

そして、私が試してみましたクエリのように保存されています。

+0

「SHOW CREATE TABLE tablename'の結果を投稿してください。列の型とインデックス(ある場合)を知る必要があります。 –

+0

あなたの日付が文字列として保存されているとお考えですか?彼らはする必要がありますか? – leeny

+1

また、クエリの2番目の部分にエラーがあります.DATE_FORMAT(DATE_ADD(CURDATE()、INTERVAL 1 MONTH)、GET_FORMAT(DATE、 'EUR'))は、 – Damp

答えて

0

日付は実際の日付または日時フィールドに格納されていますか? char/varcharフィールドにある場合は、BETWEEN構文を使用することはできません。これは、mysqlが固定文字列として扱うためです。

関連する問題