SQLite | 関数 | 日付・時刻関数
SQLiteはdate、time、datetime、julianday、strftimeで日付と時刻を処理する。
date(timestring, modifier, ...)
time(timestring, modifier, ...)
datetime(timestring, modifier, ...)
julianday(timestring, modifier, ...)
strftime(format, timestring, modifier, ...)
順にYYYY-MM-DD、HH:MM:SS、YYYY-MM-DD HH:MM:SS、ユリウス日を返す。指定がなければUTCとして扱う。入力にはISO形式、now、ユリウス日を使える。
select date('2008-04-28 09:15:42'),
time('2018-10-28 17:42:19'), datetime('2019-11-06 12:03');
select date('now'), time('now'), datetime('now');
select julianday('2019-08-04 08:42:19'); -- 2458699.86271991
strftime
%Y、%m、%dは年月日、%H、%M、%S、%fは時分秒、%W、%j、%wは週・年初からの日数・曜日、%sはUnix秒、%Jはユリウス日、%%はパーセント記号を表す。
select strftime('%H:%M:%f', 'now');
select strftime('経過秒: %s', 'now');
修飾子
年、月、日、時、分、秒の加減算に加え、start of year、start of month、start of day、weekday N、unixepoch、localtime、utcを利用できる。
select datetime('2019-11-06', '+1 days');
select datetime('2019-11-07', '-4 hours');
select datetime('2019-11-06', '+2 days', '-4 hours');
select datetime('2019-11-07 21:16', 'start of year');
select datetime('2019-11-07 21:16', 'start of month');
select datetime('2019-11-07 21:16', 'start of day');
select datetime('2019-11-07', 'weekday 0'); -- 次の日曜日
select datetime('2019-11-07', 'weekday 3'); -- 次の水曜日
select datetime('35');
select datetime('35', 'unixepoch'); -- 1970-01-01 00:00:35
select datetime('now'), datetime('now', 'localtime');
select datetime('2019-05-14 10:25'), datetime('2019-05-14 10:25', 'utc');
localtimeはUTCからローカル時刻へ、utcはローカル時刻として扱った値をUTCへ変換する。