通过 Python 读取 MySQL 有时会导致警告 1292,似乎将秒解释为大于 60。
Reading MySQL via Python sometimes causes warning 1292, seemingly interpreting seconds as greater than 60.
这是一个奇怪的帖子,虽然我找到了几个处理 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
-- 只是为了过滤。
问题:(显然)我该如何纠正这个警告?
使用正确的 INTERVAL
表达式代替 10
。
WHERE Time > DATE_SUB(NOW(), INTERVAL 10 SECOND)
您的代码将 NOW()
转换为 20171107190408
之类的整数,然后从中减去 10
。当当前时间的秒数小于 10
.
时,您将收到错误消息
这是一个奇怪的帖子,虽然我找到了几个处理 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
-- 只是为了过滤。
问题:(显然)我该如何纠正这个警告?
使用正确的 INTERVAL
表达式代替 10
。
WHERE Time > DATE_SUB(NOW(), INTERVAL 10 SECOND)
您的代码将 NOW()
转换为 20171107190408
之类的整数,然后从中减去 10
。当当前时间的秒数小于 10
.