2012-03-18 85 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

我該如何判斷+ INTERVAL的結果,以便實際看到結果? – Ted 2012-03-18 14:32:14

回答

4

date列可能是null而不是0000-00-00。爲了驗證這一點嘗試:

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

null的比較是neither true nor false,但 「未知」。由於where子句要求條件爲真(且不是錯誤或未知),因此將從結果集中濾除包含null日期的行。

3

在mysql中datetime的支持範圍是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

可能是列空,但你把它看作「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)。 – 2015-01-24 00:32:46