mysql - 有效日期时间值的奇怪 MySQL 警告 1264

标签 mysql datetime warnings mysql-error-1264

我在命令行手动(GASP!)输入了一个 MySQL 命令,我收到了一个我什至无法理解的警告。 (在任何人说什么之前,是的,我知道:1. 使用命令行界面不是最好的方法;2. 我的表未命名为“TABLE_NAME”,我的列未命名为“DateColumn”,我的 RecordID 值不是真的是“1234”;3. 也许我的列类型应该是 TIMESTAMP,但现在不是。继续......)

尝试为日期“2012 年 7 月 26 日下午 2: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 上搜索了解决方案。我已经用谷歌搜索了解释。我已经阅读了 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,除了现在的 DST GMT-7);我从 EDT 上的客户端登录 (SSH)(这应该无关紧要);我将所有 Date_Column 值存储为 GMT。在我输入值“2012-07-26 14:27:00”时,所有三个日期都在那之后,即 2012 年 7 月 30 日。这并不重要——我应该能够输入 future 日期而不会出现错误——但我认为这可能对您有所帮助。所以——

为什么,哦,为什么“2012-07-26 14:27:00”是一个超出范围的值?

我的 MySQL 客户端 API 版本是 5.1.49。

这是我第一次在 StackOverflow 上发帖。预先感谢您的建议。

最佳答案

我想知道它是否正在将它从字符串转换为某种日期格式。该日期格式将具有过多的精度,这将被截断。在分配之前尝试将其转换为日期时间。

关于mysql - 有效日期时间值的奇怪 MySQL 警告 1264,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11731288/

相关文章:

Python Pandas 从日期创建日期时间索引

javascript - 将字符串解析为时间格式 JavaScript

java - 如何在 lift JSON 中序列化和反序列化 Java 8 dateTime?

perl - 参数不是数字 - 问题

c++ - 如何摆脱这个 Eclipse 警告?

c# - 如何修复 Visual Studio 警告

php - 登录我的网站管理部分时出现问题

php - 我如何自动化 EXCEL 工作表、Mysql 和 XML 交互

java - SQL 查询在 phpmyadmin 中有效,但在使用 jdbc 和 java 时无效

MySql 和 Visual Studio 2013 集成