MYSQL DateTime '0000-00-00 00:00:00' + интервал 1 месяц НЕ меньше NOW () - PullRequest
0 голосов
/ 18 марта 2012

У меня есть поле DATETIME в таблице, где для вставки я установил «0» Значение в конечном итоге становится равным «0000-00-00 00:00:00» Когда я использую:

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

Я не получаю эти строки. Это имеет какое-либо отношение к 1970 году?

Ответы [ 3 ]

4 голосов
/ 18 марта 2012

Столбец date, вероятно, null, а не 0000-00-00. Чтобы проверить это, попробуйте:

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

Сравнение с null является ни истинным, ни ложным , но "неизвестным". Поскольку предложение where требует, чтобы условие было истинным (а не ложным или неизвестным), строки с датой null отфильтровываются из набора результатов.

3 голосов
/ 18 марта 2012

в mysql поддерживаемый диапазон для даты и времени от '1000-01-01 00:00:00' до '9999-12-31 23:59:59'.

вероятно, этот столбец пуст, но вы видите его как "0000-00-00 00:00:00"

0 голосов
/ 24 января 2015

Но мне удалось сохранить более раннюю дату, чем «1000-01-01» Вот моя таблица и данные:

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    |       |
+--------+---------------------+------+-----+---------+-------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...