概要
SQLite3で日付から曜日を取得するにはstrftime()関数を使用する。
構文
strftime()は第一引数に日時から取得する要素の変数を、第二引数に実際の日時を指定することで 日時を自由な文字列フォーマットに変換して出力することができる。
strftime(format, datetime)
日時として指定出来る文字列はdate()やdatetime()に指定する文字列と同じ。
曜日を取得するにはstrftime()の第一引数に「%w」を指定する。 返り値は0から6までの値となり、これが日曜日~月曜日を指す。
返り値 | 曜日 |
---|---|
0 | 日曜日 |
1 | 月曜日 |
2 | 火曜日 |
3 | 水曜日 |
4 | 木曜日 |
5 | 金曜日 |
6 | 土曜日 |
実行例
環境
- Windows 10 64bit
- SQLite3 ver.3.37.0
sqlite> select strftime('%w', '2022-01-01');
6
sqlite> select strftime('%w', '2022-01-02');
0
sqlite> select strftime('%w', '2022-01-03');
1
sqlite> select strftime('%w', '2022-01-04');
2
sqlite> select strftime('%w', '2022-01-05');
3
sqlite> select strftime('%w', '2022-01-06');
4
sqlite> select strftime('%w', '2022-01-07');
5
曜日の名前を取得したい
strftime()関数で曜日が数字として取得出来るので、 これを曜日名に直すにはCASE文などを利用して条件分岐してやればいい。
なお、strftime()の戻り値は数値型ではなく文字列型として比較すること。
id | str_date |
---|---|
A | 2022-01-01 |
B | 2022-01-02 |
C | 2022-01-03 |
D | 2022-01-04 |
E | 2022-01-05 |
F | 2022-01-06 |
G | 2022-01-07 |
sqlite> .mode box
sqlite> select
...> id
...> , case strftime('%w', str_date)
...> when '0' then 'Sunday'
...> when '1' then 'Monday'
...> when '2' then 'Tuesday'
...> when '3' then 'Wednesday'
...> when '4' then 'Thursday'
...> when '5' then 'Friday'
...> when '6' then 'Saturday'
...> else 'undefined'
...> end as weekday
...> from
...> sample_date
...> ;
┌────┬───────────┐
│ id │ weekday │
├────┼───────────┤
│ A │ Saturday │
│ B │ Sunday │
│ C │ Monday │
│ D │ Tuesday │
│ E │ Wednesday │
│ F │ Thursday │
│ G │ Friday │
└────┴───────────┘
外部参考サイト
-
SQLite Query Language: Date And Time Functions(英語)
公式の日時型に関するドキュメント
https://www.sqlite.org/lang_datefunc.html