SQLの日付と時刻を取得する関数
【開発環境】
OS:Win10(64ビット)
データベース:SQLite3
コマンドプロンプト入力
【日付と時刻の取得方法】
それぞれの関数は日付と時刻を取得する為に使用する
書式
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
各関数のフォーマット
date関数 'YYYY-MM-DD'
time関数 'HH:MM:SS'
datetime関数 'YYYY-MM-DD HH:MM:SS'
julianday関数 'J'
■date関数、time関数、datetime関数を使った日付と時刻の取得
SQL文
sqlite> .header on
sqlite> .mode column
sqlite> select date('2018-05-12 13:15:42') as date,
...> time('2019-08-04 08:42:19') as time,
...> datetime('2019-11-30 21:16') as datetime;
date time datetime
---------- ---------- -------------------
2018-05-12 08:42:19 2019-11-30 21:16:00
sqlite>
現在の日付と時刻を取得するには
SQL文
sqlite> select date('now') as date,
...> time('now') as time,
...> datetime('now') as datetime;
date time datetime
---------- ---------- -------------------
2020-07-30 02:28:08 2020-07-30 02:28:08
■julianday関数を使った日付と時刻の取得
指定した日時からユリウス日を取得する。
SQL文
SQLite version 3.31.1 2020-01-27 19:55:54
Enter ".help" for usage hints.
sqlite> .header on
sqlite> .mode column
sqlite> select julianday('2019-08-04 08:42:19') as julianday;
julianday
----------------
2458699.86271991
sqlite>
■strftime関数を使った日付と時刻の取得
フォーマット
%Y 年: 0000-9999
%m 月: 01-12
%d 日
%W 年の初めからの週数: 00-53
%j 年の初めからの経過日数: 001-366
%w 曜日: 0-6 (日曜日が0、土曜日が6)
%H 時: 00-24
%M 分: 00-59
%S 秒: 00-59
%f 秒+ミリ秒: SS.SSS
%s 1970-01-01からの経過秒数
%J ユリウス日
%% %文字そのもの
SQL文
sqlite> select strftime('%H:%M:%f', 'now') as strftime;
strftime
------------
07:08:21.984
sqlite>
sqlite> select strftime('経過秒数 %s秒', 'now') as strftime;
strftime
----------------
経過秒数 1596179369秒
sqlite>
■Modifiers(修飾子)の使い方
sqlite> select datetime('2020-07-04', '+1 days') as datetime;
datetime
-------------------
2020-07-05 00:00:00
sqlite>
sqlite> select datetime('2020-07-04', '-4 hours') as datetime;
datetime
-------------------
2020-07-03 20:00:00
sqlite>
sqlite> select datetime('2020-07-04','+2 days', '-4 hours') as datetime;
datetime
-------------------
2020-07-05 20:00:00
sqlite>
最初の日と最初の時間
sqlite> select datetime('2019-05-04 21:16', 'start of year') as datetime;
datetime
-------------------
2019-01-01 00:00:00
sqlite> select datetime('2019-05-04 21:16', 'start of month') as datetime;
datetime
-------------------
2019-05-01 00:00:00
sqlite> select datetime('2019-05-04 21:16', 'start of day') as datetime;
datetime
-------------------
2019-05-04 00:00:00
sqlite>
指定した曜日の日
sqlite> select datetime('2019-05-04', 'weekday 0') as datetime;
datetime
-------------------
2019-05-05 00:00:00
sqlite> select datetime('2019-05-04', 'weekday 3') as datetime;
datetime
-------------------
2019-05-08 00:00:00
sqlite>
※コメント投稿者のブログIDはブログ作成者のみに通知されます