SQLite | 関数 | 日付・時刻関数

SQLiteはdatetimedatetimejuliandaystrftimeで日付と時刻を処理する。

date(timestring, modifier, ...)
time(timestring, modifier, ...)
datetime(timestring, modifier, ...)
julianday(timestring, modifier, ...)
strftime(format, timestring, modifier, ...)

順にYYYY-MM-DDHH:MM:SSYYYY-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 yearstart of monthstart of dayweekday Nunixepochlocaltimeutcを利用できる。

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へ変換する。