【初心者向け】SQLite3でUnixタイムスタンプを簡単操作!読み取り、書き込み、変換をマスターしよう
SQLite3でUnixタイムスタンプを読み取るには、以下の2つの方法があります。
方法1:strftime関数を使用する
strftime()
関数は、Unixタイムスタンプを人間が読みやすい形式に変換するために使用できます。以下のクエリは、unix_timestamp
という名前の列に保存されているUnixタイムスタンプを、YYYY-MM-DD HH:MM:SS形式に変換して読み取ります。
SELECT strftime('%Y-%m-%d %H:%M:%S', unix_timestamp) AS formatted_timestamp
FROM your_table;
SELECT datetime(unix_timestamp, 'unixepoch') AS formatted_timestamp
FROM your_table;
どちらの方法を使用するかは、状況によって異なります。strftime()
関数は、Unixタイムスタンプを人間が読みやすい形式に変換したい場合に適しています。一方、datetime()
関数は、UnixタイムスタンプをSQLite3の日付と時刻の関数で使用したい場合に適しています。
例
以下の例は、my_table
という名前のテーブルに unix_timestamp
という名前の列がある場合の、Unixタイムスタンプの読み取り方です。
-- strftime関数を使用する
SELECT strftime('%Y-%m-%d %H:%M:%S', unix_timestamp) AS formatted_timestamp
FROM my_table;
-- datetime関数を使用する
SELECT datetime(unix_timestamp, 'unixepoch') AS formatted_timestamp
FROM my_table;
このクエリを実行すると、以下の結果が出力されます。
formatted_timestamp
-----------------
2024-06-15 01:55:00
この例では、unix_timestamp
列の値が1687129300であると仮定しています。これは、2024年6月15日01:55:00 UTCのUnixタイムスタンプです。
補足
- SQLite3には、Unixタイムスタンプを操作するための他の関数もいくつかあります。詳細は、SQLite3の公式ドキュメントを参照してください。
- Unixタイムスタンプは、データベースに日付と時刻を保存するための一般的な方法です。他のデータベースシステムでも、同様の方法でUnixタイムスタンプを保存することができます。
import sqlite3
# データベースに接続する
conn = sqlite3.connect('my_database.db')
# カーソルを作成する
cursor = conn.cursor()
# Unixタイムスタンプを読み取る
cursor.execute('SELECT unix_timestamp FROM my_table')
# 結果をフェッチする
for row in cursor.fetchall():
unix_timestamp = row[0]
# strftime関数を使用して、Unixタイムスタンプを人間が読みやすい形式に変換する
formatted_timestamp = strftime('%Y-%m-%d %H:%M:%S', gmtime(unix_timestamp))
print(formatted_timestamp)
# データベースを閉じる
conn.close()
このコードは、以下のことを行います。
my_database.db
という名前のデータベースに接続します。- カーソルを作成します。
my_table
テーブルからunix_timestamp
列の値をすべて読み取ります。- 各Unixタイムスタンプを
strftime()
関数を使用して人間が読みやすい形式に変換します。 - 変換されたタイムスタンプをコンソールに出力します。
- データベースを閉じます。
このコードを自分のニーズに合わせて変更することができます。たとえば、読み取るテーブル名や列名を変更したり、変換されたタイムスタンプをファイルに保存したりすることができます。
注意事項
- このコードは、Python 3 で動作するように書かれています。
- SQLite3をインストールする必要があります。
SQLite3でUnixタイムスタンプを読み取るその他の方法
方法1:CASE式を使用する
CASE
式を使用して、Unixタイムスタンプに基づいてさまざまな値を返すことができます。以下のクエリは、unix_timestamp
列の値が1000000000より小さい場合は "Old", それ以外の場合は "New" という文字列を返します。
SELECT
CASE
WHEN unix_timestamp < 1000000000 THEN 'Old'
ELSE 'New'
END AS timestamp_status
FROM your_table;
方法2:サブクエリを使用する
サブクエリを使用して、Unixタイムスタンプを操作することができます。以下のクエリは、unix_timestamp
列の値が1000000000より大きいレコードの数をカウントします。
SELECT COUNT(*)
FROM your_table
WHERE unix_timestamp > 1000000000;
方法3:ウィンドウ関数を使用する
ウィンドウ関数を使用して、Unixタイムスタンプに基づいて集計を行うことができます。以下のクエリは、unix_timestamp
列の値の最大値、最小値、平均値を返します。
SELECT
MAX(unix_timestamp) AS max_timestamp,
MIN(unix_timestamp) AS min_timestamp,
AVG(unix_timestamp) AS avg_timestamp
FROM your_table;
これらの方法は、より複雑なクエリを作成する場合に役立ちます。
SQLite3には、Unixタイムスタンプを読み取るためのさまざまな方法があります。自分に合った方法を選択してください。
- 他のプログラミング言語でSQLite3を使用する方法については、それぞれの言語のドキュメントを参照してください。
sqlite