やりたいこと
2022-01-20 12:34:56.123456
というマイクロ秒まで含んだ形式で時刻を表し、MySQLに格納したりPythonで扱ったりしたい。
本記事では説明しないこと
PythonでMySQLからデータを引っ張ってくる部分。
pymysql等のリファレンスをご参照ください。
MySQL側
CREATE TABLE tbl (dt DATETIME(6));
INSERT INTO tbl VALUES('2022-01-20 00:16:07.123456');
Python側
from datetime import datetime
datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')
#=> '2022-01-20 00:16:07.123456'
説明
MySQLでマイクロ秒までついた時刻を扱いたい時はDATETIME(fsp)
という型が使えます。fsp
は小数点の桁を表す、0から6の整数です。(MySQL 5.6.4 以降)
MySQL 5.6.4 以降では、マイクロ秒 (6 桁) までの精度を持つ TIME、DATETIME、およびTIMESTAMP 値に対して小数秒のサポートを拡張しています。
また、Python側ではdatetimeをstrftime()で%Y-%m-%d %H:%M:%S.%f
形式の文字列に変換しています。
%f 指定子は 1 桁から 6 桁の数字を受け付け、右側から0埋めされます。
000000, 000001, ..., 999999
参考
MySQLのマイクロ秒 https://dev.mysql.com/doc/refman/5.6/ja/fractional-seconds.html
strftime https://docs.python.org/ja/3/library/datetime.html#strftime-strptime-behavior