当前位置: 首页 > 知识库问答 >
问题:

Python MySQLdb日期时间值不正确:“2018-03-25 02:00:02”

陆宇航
2023-03-14

我在Python上使用mysqlclient包的MySQLdb得到这个错误。

_mysql_exceptions.OperationalError: 
(1292, "Incorrect datetime value: '2018-03-25 02:00:02' for column 'start' at row 1")

导致错误的代码

conn.cursor.execute(query.format(table=table), 
(row['id'], row['type'], row['start'], row['end'],       
row['raw_xml'], row['id_parent'], row['rango']))

我可以正确插入其余的行,但当我尝试插入这个datetime对象时,它会崩溃。

数据库中的字段是一个timestamp字段,它与其余的datetime对象一起工作,但当它试图使该语句崩溃时,不知道为什么。

提前道谢。

共有1个答案

逄征
2023-03-14

中欧时间在2018-03-25 02:00当地时间从标准时间切换到夏令时。

这很可能是标准时间切换到夏令时当天的时区转换错误。从0200到0300之前的时间不存在。您的时间值2018-03-25 02:00:02在中欧时间中不存在。

这将为您提供2018-03-25 03:00:00

SET time_zone = 'Europe/Madrid';
SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2018-03-25 02:30'));

用这个俗气的表定义:

CREATE TABLE timetest (
    id INT NOT NULL AUTO_INCREMENT,
    ts TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX `PK` (`id`)
);

运行此INSERT将得到不正确的DATETIME值错误。

INSERT INTO timetest (ts) VALUES ('2018-03-25 02:30');

但运行此黑客可以正常工作,并将03:00放入表中。

INSERT INTO timetest (ts) VALUES (FROM_UNIXTIME(UNIX_TIMESTAMP('2018-03-25 02:30')));

您最好的方法是弄清楚您是如何得出那个无效的日期/时间值的,并纠正您的错误。你第二个最好的选择是这个黑客。

您还可以将timestamp列更改为datetime列,并将所有时间戳存储在本地时间中。

 类似资料:
  • 问题内容: 我最近接手了一个十年前创建的旧项目。它使用MySQL 5.1。 除其他外,我需要将默认字符集从latin1更改为utf8。 例如,我有这样的表: 我设置了自己的Mac来进行此工作。不用考虑太多,我运行了“ brew install mysql”,它安装了MySQL 5.7。所以我有一些版本冲突。 我下载了此数据库的副本并将其导入。 如果我尝试运行这样的查询: 我收到此错误: 我以为可以

  • 我引用了许多题目,题目和我的题目相同,但它们的方法和问题不同,所以这个题目不是重复的。 我有一个表,其中是类型,并且具有默认值。 通过网站插入工作正常,但当我尝试通过插入任何值时,我得到以下错误。 版本为。还有一件事,最近我们的服务器已经从升级到。 下面是查询 在升级之后,我们就开始面临这个问题

  • 当使用LocalDateTime.parse解析的日期中的秒值为零时,下面的代码(Java 8)片段删除我的日期时间的秒部分,如2018-07-10 00:00:00: 词汇日期打印如下: 词汇日期:2018-07-10T00:00 而不是: 词汇日期:2018-07-10T00:00:00 现在,这影响了公历的日期值,当秒被删除时,该日期值返回null。其他情况下,当秒的值大于零时,它可以很好地

  • 问题内容: 我需要在数据库上更改一些值。 我忘记为表格设置可空值,并且默认情况下将其设置为0000-00-00 00:00:00。 现在,我需要将该值转换为。 字段类型为“日期时间”。 我该怎么做? 我尝试使用典型的方法,但是它不起作用。 问题答案: 您首先需要将该列设置为可空: 然后更新值:

  • 在我的MySQL数据库中,我有一个有三列的表,如下所示 notification_time是时间的数据类型。 在我的Spring-boot应用程序中,为表建模

  • 问题内容: (爪哇8)以下代码段的代码丢弃 秒部分 的我的 日期时间 时的秒值是 零 使用解析的时间内 LocalDateTime.parse ,如2018年7月10日00:00: 00 : 词法日期打印为: 词法日期:2018-07-10T00:00 代替: 词法日期:2018-07-10T00:00:00 现在,这会影响公历的日期值,该公历在删除第二个时将 返回null 。在其他情况下,如果秒