2017-11-07 3 views
0

これは奇妙なものですが、1292警告を扱ういくつかの記事がありますが、Python経由でMySQLを読むと、時には警告1292が発生し、一見60秒以上の秒数が解釈されます。

セットアップ: の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を使用していません。

質問:(明らかに)この警告はどのように修正できますか?

答えて

1

10の代わりにINTERVALという適切な式を使用してください。

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

コードは20171107190408ように整数にNOW()に変換し、そのから10を引いています。現在の秒の秒が10未満のときはエラーが発生します。

+0

お世話になりました。 – SteveJ

関連する問題