何度も検索してしまう。だめだなぁということで、見るべきURLをメモ。
形式
SQLiteでは日付をテキスト文字列として保存することができます。
しかし、日付データを比較するためには、SQLiteがサポートする日付フォーマットに変換する必要があります。
Pythonのdatetimeモジュールを使用して、SQLiteの日付フォーマットに変換することができます。
以下は、PythonでSQLiteの日付フォーマットに変換する方法の例です。
import datetime date_str = '2023-04-15' dt = datetime.datetime.strptime(date_str, '%Y-%m-%d') sqlite_date_str = dt.strftime('%Y-%m-%d %H:%M:%S') print(sqlite_date_str) # 2023-04-15 00:00:00
その他形式は以下のURLを参考にしてください。
https://leben.mobi/blog/python_date_format/python/
SQLiteで日付時刻を扱う際のポイント - Qiita
#要点 SQLiteでは日付時刻は文字列として格納されるが、日付時刻型があると思って扱った方が楽。 SQLiteは日付時刻をUTCとして保持する。 SQLiteに日付時刻を渡す・取り出す際には関数を…
比較
以下を参考として学習。
SQLite _ 日付期間比較
注意点として、PythonでSQLiteの日付比較を行う場合には、まず日付をPythonのdatetimeオブジェクトに変換し、その後SQLiteの日付フォーマットに変換する必要があります。そして、execute()メソッドのパラメータとして、日付フォーマットを使用したクエリを実行する必要があります。
以下は、SQLiteで日付データを現在日と同じかを比較する例です。
import sqlite3 import datetime # SQLiteに接続する conn = sqlite3.connect('mydatabase.db') c = conn.cursor() # 日付を文字列で定義する date_str = '2023-04-15' # Pythonのdatetimeモジュールを使用して、SQLiteの日付フォーマットに変換する dt = datetime.datetime.strptime(date_str, '%Y-%m-%d') sqlite_date_str = dt.strftime('%Y-%m-%d %H:%M:%S') # SQLiteのDATE()関数を使用して、日付を比較する c.execute("SELECT * FROM mytable WHERE DATE(mydate) = ?", (sqlite_date_str,)) rows = c.fetchall() # 結果を表示する for row in rows: print(row) # SQLiteから切断する conn.close()
現時点との時刻差がほしいときもあります。SQLiteから日付形式データを取得し、
現在時刻と比較して10時間以上前の時刻かを判定するPythonスクリプトの例です。なお、日付形式は「YYYY-MM-DD HH:MM:SS」を想定しています。
import sqlite3 import datetime # SQLiteに接続 conn = sqlite3.connect('database.db') cur = conn.cursor() # データベースから日付形式のデータを取得 cur.execute("SELECT datetime_column FROM table_name") for row in cur.fetchall(): # 日付形式のデータをdatetimeオブジェクトに変換 datetime_obj = datetime.datetime.strptime(row[0], '%Y-%m-%d %H:%M:%S') # 現在時刻との差分を計算 diff = datetime.datetime.now() - datetime_obj # 差分が10時間以上かどうかを判定 if diff.total_seconds() >= 36000: print("10時間以上前のデータがあります。") # 接続を閉じる conn.close()
コメント