2021年12月11日土曜日

SQLite3で「現在」を取得する

概要

SQLite3で「現在」を取得する方法はいくつかある。
いわゆる「タイムスタンプ」を取得したい場合は、以下に示すいずれかの方法で取得すればいい。
全て UTC で取得されるので必要に応じて時差を計算する必要がある。

now

date()やtime()といった日時用の関数の引数として使用して、現在日時を取得する。


sqlite> select date('now');
2021-12-10

sqlite> select datetime('now');
2021-12-10 13:32:03

sqlite> select time('now');
13:32:10
                    

current_date

本日日付(UTC)を取得出来る。date('now')と同等の機能。
datetime()の引数に指定した場合、時刻部分は00:00:00となる。


sqlite> select current_date;
2021-12-10

sqlite> select datetime(current_date);
2021-12-10 00:00:00
                    

current_time

現在時刻(UTC)を取得出来る。time('now')と同等の機能。
datetime()の引数に指定した場合、日付部分は2000-01-01となる。


sqlite> select current_time;
14:17:59

sqlite> select datetime(current_time);
2000-01-01 14:18:10
                    

current_timestamp

現在日時(UTC)を取得出来る。datetime('now')と同等の機能。


sqlite> select current_timestamp;
2021-12-10 14:18:35
                    

データ作成日のデフォルト値としてよく使う。


create table users {
    user_id     text not null
    , user_name text not null
    , timestamp  text default current_timestamp
}
                    

外部参考サイト