通过Python读取MySQL有时会导致警告1292,似乎将秒数解释为大于60秒。

2024-04-20 07:00:55 发布

您现在位置:Python中文网/ 问答频道 /正文

这是一个奇怪的一个,虽然我发现了几个帖子处理1292警告,似乎没有什么是非常适合我的情况。你知道吗

设置: Python 3.5版 PyMySQL==0.7.11 MySql 5.5.53版本

查询:

Executing sql: SELECT PacketID, `Type`, `Length`, Raw_Data
                    FROM extra_packets 
                    WHERE `Time` > NOW() - 10  AND PacketId > '18345' ORDER BY `Time` DESC;

结果:

python3.5/site-packages/pymysql/cursors.py:323: Warning: (1292, "Incorrect datetime value: '20171107190398' for column 'Time' at row 1")

样本数据:

PacketID    Time                Type    Length  Raw_Data

18,346      2017-11-07 19:04:06 76  22  .......
18,345      2017-11-07 19:04:01 76  22  .......
18,344      2017-11-07 19:03:57 76  22  .......

备注:

  • 在警告消息中,秒值大于60-我想这就是问题所在?你知道吗
  • 这种情况并不总是发生的,可能是特定于时间的
  • 我实际上并没有在响应中使用Time——只是为了过滤器。你知道吗

问题:(显然)如何更正此警告?你知道吗


Tags: 版本警告sqldatarawtimetypemysql
1条回答
网友
1楼 · 发布于 2024-04-20 07:00:55

使用适当的INTERVAL表达式而不是10。你知道吗

WHERE Time > DATE_SUB(NOW(), INTERVAL 10 SECOND)

您的代码将NOW()转换为20171107190408这样的整数,然后从中减去10。当当前时间的秒数小于10时,就会出现错误。你知道吗

相关问题 更多 >