MySQL1292 不正确的日期时间值
MySQL 1292 Incorrect datetime value
当我尝试将“2011/03/13 02:53:50.000000000”插入时间戳列时出现此错误。如果我将 13 更改为 15、14、12 或 11,则没有问题。我也尝试过将 /'s 更改为 -'s 但仍然不行。
我查看了与此错误相关的其他一些线程,但 none 似乎适用。
我是 运行 版本 5.7.9。
你需要试试这个:
STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s')
否则您必须使用破折号分隔符 (-) 插入日期,例如
'2011-03-13 02:53:50'
我认为您需要在插入之前使用一些 str conversions in MySQL。或者在查询 MySQL.
之前以正确的格式准备数据
微秒格式也不对。 MySQL documentation clearly states this:
A DATETIME or TIMESTAMP value can include a trailing fractional seconds part in up to microseconds (6 digits) precision.
更新:在我的本地主机上,我有相同版本的 MySQL,并且可以使用。
尝试执行转换
select str_to_date("2011-03-13 02:53:50.000000", "%Y-%m-%d %H:%i:%s.%f") as `t`
并得到:
+----------------------------+
| t |
+----------------------------+
| 2011-03-13 02:53:50.000000 |
+----------------------------+
1 row in set (0.00 sec)
这是 SQLFiddle,它证实了其他版本 MySQL 上的内容。
我运行没有想法,我认为问题与Table结构中的"local glitch"或MySQL+OS的特定版本有关.
仍然不确定问题是什么 is/was,可能是 CentOS 和 MySQL 版本的组合。我将列更改为 datatime(6) 而不是 timestamp(6) 并且我能够成功导入所有数据。
我花了一段时间才弄明白...
问题是 '2011-03-13 02:53:50' 是非法的,因为夏令时在凌晨 2 点和凌晨 3 点之间切换,所以任何 DST 引入日凌晨 2 点到 3 点之间的所有时间值都是无效的。与“2016-03-13 02:32:21”等相同
将系统时区更改为不使用 DST 的时区,应该没问题。
当我尝试将“2011/03/13 02:53:50.000000000”插入时间戳列时出现此错误。如果我将 13 更改为 15、14、12 或 11,则没有问题。我也尝试过将 /'s 更改为 -'s 但仍然不行。
我查看了与此错误相关的其他一些线程,但 none 似乎适用。
我是 运行 版本 5.7.9。
你需要试试这个:
STR_TO_DATE( '2011/03/13 02:53:50', '%Y/%m/%d %H:%i:%s')
否则您必须使用破折号分隔符 (-) 插入日期,例如
'2011-03-13 02:53:50'
我认为您需要在插入之前使用一些 str conversions in MySQL。或者在查询 MySQL.
之前以正确的格式准备数据微秒格式也不对。 MySQL documentation clearly states this:
A DATETIME or TIMESTAMP value can include a trailing fractional seconds part in up to microseconds (6 digits) precision.
更新:在我的本地主机上,我有相同版本的 MySQL,并且可以使用。 尝试执行转换
select str_to_date("2011-03-13 02:53:50.000000", "%Y-%m-%d %H:%i:%s.%f") as `t`
并得到:
+----------------------------+
| t |
+----------------------------+
| 2011-03-13 02:53:50.000000 |
+----------------------------+
1 row in set (0.00 sec)
这是 SQLFiddle,它证实了其他版本 MySQL 上的内容。
我运行没有想法,我认为问题与Table结构中的"local glitch"或MySQL+OS的特定版本有关.
仍然不确定问题是什么 is/was,可能是 CentOS 和 MySQL 版本的组合。我将列更改为 datatime(6) 而不是 timestamp(6) 并且我能够成功导入所有数据。
我花了一段时间才弄明白...
问题是 '2011-03-13 02:53:50' 是非法的,因为夏令时在凌晨 2 点和凌晨 3 点之间切换,所以任何 DST 引入日凌晨 2 点到 3 点之间的所有时间值都是无效的。与“2016-03-13 02:32:21”等相同
将系统时区更改为不使用 DST 的时区,应该没问题。