私はテーブルに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年と関係がありますか?
私はテーブルに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年と関係がありますか?
date
の列はおそらくnull
で、0000-00-00
ではありません。
WHERE coalesce(DATE,'1900-01-01') + INTERVAL 5 MONTH < NOW()
null
との比較がneither true nor falseですが、 "不明":この試みを確認します。 where
句は、条件が真であることを要求するため(偽または未知ではない)、null
の行は結果セットから除外されます。
in mysql datetimeのサポート範囲は、 '1000-01-01 00:00:00'から '9999-12-31 23:59:59'です。
おそらくその列がnullであるが、あなたは「0000-00-00 00:00:00」として
それを見ている。しかし、私は「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 | |
+--------+---------------------+------+-----+---------+-------+
これは本当にコメントであり、答えではありません。もう少し担当者がいれば、[あなたはコメントを投稿できる](http://stackoverflow.com/privileges/comment)。 –
私は実際に結果を見ることができる+インターバルの結果をどのように伝えることができますか? – Ted