2012-03-18 15 views
0

私はテーブルにDATETIMEフィールドを持っています。ここでは、挿入時に '0'として設定します。 値は、私が使用している場合「0000-00-00 00:00:00」 に等しくされて終わる:MYSQL DateTime '0000-00-00 00:00:00' +間隔1月がNOWより小さくない()

SELECT ... 
WHERE DATE+INTERVAL 5 MONTH < NOW() 

私はこれらの行を得ることはありません。それは1970年と関係がありますか?

+0

私は実際に結果を見ることができる+インターバルの結果をどのように伝えることができますか? – Ted

答えて

4

dateの列はおそらくnullで、0000-00-00ではありません。

WHERE coalesce(DATE,'1900-01-01') + INTERVAL 5 MONTH < NOW() 

nullとの比較がneither true nor falseですが、 "不明":この試みを確認します。 where句は、条件が真であることを要求するため(偽または未知ではない)、nullの行は結果セットから除外されます。

3

in mysql datetimeのサポート範囲は、 '1000-01-01 00:00:00'から '9999-12-31 23:59:59'です。

おそらくその列がnullであるが、あなたは「0000-00-00 00:00:00」として

-2

それを見ている。しかし、私は「1000年1月1日」より前の日付を保存することができました は、ここに私ですテーブルとデータ:

select * from typetest; 

-------------------------------- 
| number | string | date  | 
-------------------------------- 
| 255 | yoodo | 0999-12-31 | 
-------------------------------- 

mysql> desc typetest;

+--------+---------------------+------+-----+---------+-------+ 
| Field | Type    | Null | Key | Default | Extra | 
+--------+---------------------+------+-----+---------+-------+ 
| number | tinyint(3) unsigned | YES |  | NULL |  | 
| string | char(5)    | YES |  | NULL |  | 
| date | date    | YES |  | NULL |  | 
+--------+---------------------+------+-----+---------+-------+ 
+0

これは本当にコメントであり、答えではありません。もう少し担当者がいれば、[あなたはコメントを投稿できる](http://stackoverflow.com/privileges/comment)。 –

関連する問題