gpt4 book ai didi

MySQL:不正确的日期值

转载 作者:行者123 更新时间:2023-12-01 00:46:17 25 4
gpt4 key购买 nike

我正在解析一个具有以下数据结构的 xml 文件:

  <row Id="253858" UserId="40883" Name="Scholar" Date="2009-03-08T01:52:32.570" />
<row Id="253860" UserId="19483" Name="Supporter" Date="2009-03-08T01:57:31.733" />
<row Id="253861" UserId="74951" Name="Autobiographer" Date="2009-03-08T02:02:32.390" />

我使用 ruby​​ 脚本解析这些数据并将它们插入到 mysql 数据库中。这是我的数据表的样子:

+---------+-------------+------+-----+-------------------+-----------------------------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+-------------------+-----------------------------+
| id | int(11) | NO | PRI | NULL | |
| user_id | int(11) | NO | | NULL | |
| name | varchar(40) | YES | | NULL | |
| created | timestamp | NO | | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+---------+-------------+------+-----+-------------------+-----------------------------+

这个 xml 文件有大量记录,在解析器到达第 3 条记录之前,我没有收到任何错误,所有数据都被正确解析并插入到表中:

| 253857 |   23658 | Critic             | 2009-03-08 01:52:32 |
| 253858 | 40883 | Scholar | 2009-03-08 01:52:33 |
| 253860 | 19483 | Supporter | 2009-03-08 01:57:32 |
+--------+---------+--------------------+---------------------+

但是当我们使用 row Id="253861" 获取记录时,我收到以下 mysql 错误:

load.rb:21:in `execute': Incorrect datetime value: '2009-03-08T02:02:32.390' for column 'created' at row 1 (Mysql::Error)
from load.rb:21:in `on_start_element'
from load.rb:133:in `parse'
from load.rb:133:in `<main>'

如果你需要插入记录的ruby方法:

  def on_start_element(element, attributes)
if element == 'row'
@st.execute(attributes['Id'], attributes['UserId'], attributes['Name'], attributes['Date'])
end
end
end

我不认为这与脚本有关,因为我从 xml 文件中提取记录并试图直接插入到我的 mysql 表中,但出现以下错误:

mysql> insert into badge values(253861,74951,'Autobiographer','2009-03-08T02:02:32.390');
ERROR 1292 (22007): Incorrect datetime value: '2009-03-08T02:02:32.390' for column 'created' at row 1

我也尝试在xml文件中插入上述记录之后的记录,我得到了相同的结果:

mysql> insert into badge values(253862,49628,'Teacher','2009-03-08T02:12:30.807');
ERROR 1292 (22007): Incorrect datetime value: '2009-03-08T02:12:30.807' for column 'created' at row 1

所以那个日期字符串中的某些东西让 mysql 不高兴。我无法弄清楚的是具有相同日期结构的日期和以前的记录没有任何问题。希望我已经用信息把问题解释清楚了。

最佳答案

既然你说你在几个地方插入日期,我建议你编写和辅助方法来进行日期转换,你可以在需要插入日期的任何地方重复使用

require 'date'
def iso8601_to_mysql_datetime(date)
DateTime.parse(date).to_time.strftime("%F %T")
end

iso8601_to_mysql_datetime('2009-03-08T02:02:32.390')
=> "2009-03-08 02:02:32"

注意:上面将 ISO8601 转换为 MySQL 可以理解的字符串可以在此处找到 MySQL 日期和时间文字文档:

http://dev.mysql.com/doc/refman/5.6/en/date-and-time-literals.html

关于MySQL:不正确的日期值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21652188/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com