我在表格中有一个DATETIME字段,我在插页上设置为'0'。 该值最终等于'0000-00-00 00:00:00' 当我使用时:
SELECT ...
WHERE DATE+INTERVAL 5 MONTH < NOW()
我没有得到这些行。这与1970年有什么关系吗?
答案 0 :(得分:4)
date
列可能是null
,而不是0000-00-00
。要验证这一点,请尝试:
WHERE coalesce(DATE,'1900-01-01') + INTERVAL 5 MONTH < NOW()
与null
的比较是neither true nor false,但是“未知”。由于where
子句要求条件为真(而不是虚假或未知),因此从结果集中过滤出null
日期的行。
答案 1 :(得分:3)
在mysql中,日期时间的支持范围是“1000-01-01 00:00:00”到“9999-12-31 23:59:59”。
可能该列为null但您将其视为'0000-00-00 00:00:00'
答案 2 :(得分:-2)
但是我可以存储比“1000-01-01”更早的日期 这是我的表格和数据:
select * from typetest;
--------------------------------
| number | string | date |
--------------------------------
| 255 | yoodo | 0999-12-31 |
--------------------------------
的MySQL&GT; desc typetest;
+--------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------------+------+-----+---------+-------+
| number | tinyint(3) unsigned | YES | | NULL | |
| string | char(5) | YES | | NULL | |
| date | date | YES | | NULL | |
+--------+---------------------+------+-----+---------+-------+