SQLiteでDATETIME値を扱うサンプルコード
SQLiteのDATETIME値のしくみ
DATETIME値の範囲
DATETIME値は、0001-01-01 00:00:00.000から9999-12-31 23:59:59.999までの範囲を表すことができます。
DATETIME値の比較
DATETIME値は、文字列として比較されます。つまり、2023-03-23 16:39:00は2023-03-23 16:39:01よりも小さい値となります。
DATETIME値の操作
SQLiteには、DATETIME値を操作するための様々な関数があります。
- strftime(): DATETIME値を指定された形式で文字列に変換します。
- date(): DATETIME値から日付部分のみを取り出します。
- julianday(): DATETIME値をユリウス日に変換します。
DATETIME値の例
-- DATETIME値の挿入
INSERT INTO my_table (datetime_column) VALUES ('2023-03-23 16:39:00');
-- DATETIME値の比較
SELECT * FROM my_table WHERE datetime_column > '2023-03-23 16:39:00';
-- DATETIME値の操作
SELECT strftime('%Y-%m-%d', datetime_column) FROM my_table;
SQLiteのDATETIME値は、日付と時刻を表すデータ型です。様々な関数を使って操作することができ、幅広い用途に使用することができます。
補足
- SQLiteは、タイムゾーンをサポートしていないため、DATETIME値は常にUTCで格納されます。
- DATETIME値は、64ビット整数として内部的に表現されます。
-- テーブルの作成
CREATE TABLE my_table (
id INTEGER PRIMARY KEY AUTOINCREMENT,
datetime_column DATETIME
);
-- DATETIME値の挿入
INSERT INTO my_table (datetime_column) VALUES ('2023-03-23 16:40:00');
INSERT INTO my_table (datetime_column) VALUES ('2023-03-23 16:41:00');
-- DATETIME値の比較
SELECT * FROM my_table WHERE datetime_column > '2023-03-23 16:40:00';
-- DATETIME値の操作
SELECT strftime('%Y-%m-%d', datetime_column) FROM my_table;
SELECT date(datetime_column) FROM my_table;
SELECT time(datetime_column) FROM my_table;
説明
その後、2つのDATETIME値をdatetime_column
列に挿入しています。
次に、datetime_column
列の値が2023-03-23 16:40:00
よりも大きいレコードをすべて選択しています。
最後に、strftime()
, date()
, time()
関数を使って、DATETIME値を様々な形式に変換しています。
DATETIME値を扱う他の方法
文字列として扱う
DATETIME値は、YYYY-MM-DD HH:MM:SS.SSS形式の文字列として格納されます。そのため、文字列操作関数を使って、DATETIME値を比較したり、変換したりすることができます。
-- DATETIME値の比較
SELECT * FROM my_table WHERE datetime_column > '2023-03-23 16:40:00';
-- DATETIME値の変換
SELECT substr(datetime_column, 1, 10) FROM my_table; -- 日付部分のみを取り出す
UNIXタイムスタンプとして扱う
DATETIME値は、UNIXタイムスタンプに変換することができます。UNIXタイムスタンプは、1970年1月1日0時0分0秒からの経過秒数を表す数値です。
-- DATETIME値をUNIXタイムスタンプに変換する
SELECT julianday(datetime_column) * 86400 FROM my_table;
-- UNIXタイムスタンプをDATETIME値に変換する
SELECT datetime(julianday('2023-03-23 16:40:00') / 86400, 'unixepoch');
ライブラリを使用する
SQLiteには、DATETIME値を扱うためのライブラリがいくつかあります。これらのライブラリを使うと、より簡単にDATETIME値を操作することができます。
SQLiteには、DATETIME値を扱うために、いくつかの方法があります。それぞれの方法にはメリットとデメリットがあり、状況に応じて使い分ける必要があります。
sqlite datetime