Странное предупреждение MySQL 1264 для допустимого значения DateTime

У меня вручную (GASP! )ввел команду MySQL в командной строке, и я получил предупреждение, которое даже не могу понять. (И прежде чем кто-то что-то скажет, да, я ЗНАЮ :1. Использование интерфейса командной строки — не лучший подход; 2. Моя таблица НЕ называется «ИМЯ ТАБЛИЦЫ _», а мой столбец НЕ называется «DateColumn», а мое значение RecordID на самом деле НЕ «1234»; 3. Возможно, мой тип столбца должен быть TIMESTAMP, но пока это не так. Идем дальше....)

Попытка ввести значение даты "26 июля 2012 г. в 14 :27 часов (по Гринвичу )",Я нажал:

mysql> update TABLE_NAME set DateColumn="2012-07-26 14:27:00" where RecordID="1234";

Я получил:

Query OK, 1 row affected, 1 warning (0.11 sec) 
Rows matched: 1  Changed: 1  Warnings: 1

Итак, я набрал:

mysql> show warnings;
+---------+------+-----------------------------------------------------+
| Level   | Code | Message                                             |
+---------+------+-----------------------------------------------------+
| Warning | 1264 | Out of range value for column 'DateColumn' at row 1 |
+---------+------+-----------------------------------------------------+

Странно, подумал я. Поэтому я сначала проверил таблицу, чтобы подтвердить столбец (, поле ), тип :

mysql> describe TABLE_NAME;

+------------+----------+------+-----+-------------------+-------+
| Field      | Type     | Null | Key | Default           | Extra |
| DateColumn | datetime | YES  |     | NULL              |       |
+------------+----------+------+-----+-------------------+-------+

. НО значение ДЕЙСТВИТЕЛЬНО правильно записывается в базу данных и не усекается, насколько я знаю:

mysql> select * from TABLE_NAME where RecordID="1234";

+-----------------------------------------------+
| RecordID | Date_Column         | BlahBlahBlah |
+----------+---------------------+--------------+
|     1234 | 2012-07-26 14:27:00 | something..  | 
+----------+---------------------+--------------+

Я уже искал решение на StackOverflow.com. Я уже искал объяснение в Google. Я уже читал наhttp://dev.mysql.com/doc/refman/5.5/en/datetime.htmlгде сказано:

    MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'. 

У меня даже было небольшое подозрение, что это как-то связано с датой или временем, когда я делал запись; поэтому я укажу, что сервер, на котором расположена база данных, находится в тихоокеанском летнем времени (GMT -8, за исключением сейчас GMT -7 для DST ); Я вошел в систему (SSH )от клиента на EDT (, что не должно иметь значения ); и я сохраняю все значения столбца Date _как GMT. В то время, когда я вводил значение «2012 -07 -26 14 :27 :00», все три даты были ПОСЛЕ этого, 30.07.12. Не то чтобы это имело значение --Я должен иметь возможность вводить будущие даты без получения ошибки --, но подумал, что это может быть полезно для вас знать. Так--

ПОЧЕМУ, О, ПОЧЕМУ "2012 -07 -26 14 :27 :00" является выходом -из -значения диапазона?

Моя версия клиентского API MySQL — 5.1.49.

Это мой первый пост на StackOverflow. Заранее благодарим вас за ваши предложения.

10
задан user1564318 1 August 2012 в 01:17
поделиться