我有一個表中的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
日期的行。
在mysql中datetime的支持範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
可能是列空,但你把它看作「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)。 – 2015-01-24 00:32:46
我該如何判斷+ INTERVAL的結果,以便實際看到結果? – Ted 2012-03-18 14:32:14