備忘録

MySQLとSQLiteの日付型書式の比較

MySQLのDATE_FORMATをSQLiteで使うために変換する方法を調査した時のメモ

日付型書式

MySQL SQLite
年(4桁) %Y 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%Y');
結果:2019
%Y 例:SELECT STRFTIME('%Y', '2019-04-01 05:06:07');
結果:2019
年(2桁) %y 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%y');
結果:19
月(0埋め:01~12) %m 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%m');
結果:04
%m 例:SELECT STRFTIME('%m', '2019-04-01 05:06:07');
結果:04
月(0埋めなし:1~12) %c 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%c');
結果:4
日(0埋め:01~31) %d 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%d');
結果:01
%d 例:SELECT STRFTIME('%d', '2019-04-01 05:06:07');
結果:01
日(0埋めなし:1~31) %e 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%e');
結果:1
時間(0埋めの24時間:01~24) %H 例:SELECT DATE_FORMAT('2019-04-01 14:06:07', '%H');
結果:14
%H 例:SELECT STRFTIME('%H', '2019-04-01 14:06:07');
結果:14
時間(0埋めの12時間:01~12) %h 例:SELECT DATE_FORMAT('2019-04-01 14:06:07', '%h');
結果:02
時間(0埋めなしの24時間:1~24) %k 例:SELECT DATE_FORMAT('2019-04-01 17:06:07', '%k');
結果:17
時間(0埋めなしの12時間:1~12) %l 例:SELECT DATE_FORMAT('2019-04-01 17:06:07', '%l');
結果:5
分(00~59) %i 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%i');
結果:06
%M 例:SELECT STRFTIME('%M', '2019-04-01 05:06:07');
結果:06
秒(00~59) %S 例:SELECT DATE_FORMAT('2019-04-01 05:06:07', '%S');
結果:07
%S 例:SELECT STRFTIME('%S', '2019-04-01 05:06:07');
結果:07
曜日(日曜日が0、土曜日が6:0~6) %w 例:SELECT DATE_FORMAT('2019-04-10 05:06:07', '%w');
結果:3
%w 例:SELECT STRFTIME('%w', '2019-04-10 05:06:07');
結果:3
曜日名(日曜日がSunday:Sunday,Monday,Wednesday,Wednesday,Thursday,Friday,Saturday) %W 例:SELECT DATE_FORMAT('2019-04-10 05:06:07', '%W');
結果:Wednesday
'1970-01-01 00:00:00'(UTC)からの経過秒数 %s 例:SELECT STRFTIME('%s', CURRENT_TIMESTAMP);
結果:1554062767

現在の日時を取得

MySQLの場合

SELECT NOW();
SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H時%i分%S秒');

※結果
2019-04-01 05:06:07
2019年04月01日 05時06分07秒

SQLiteの場合

SELECT DATETIME('NOW');
SELECT STRFTIME('%Y年%m月%d日 %H時%M分%S秒', 'NOW');

・LOCALTIME:日本時間(UTC +09:00)
SELECT DATETIME('NOW', 'LOCALTIME');
SELECT STRFTIME('%Y年%m月%d日 %H時%M分%S秒', 'NOW', 'LOCALTIME');

※結果
・UTC(協定世界時)
2019-03-31 20:06:07
2019年03月31日 20時06分07秒

・JST(日本標準時)
2019-04-01 05:06:07
2019年04月01日 05時06分07秒

UNIXタイムスタンプを取得

MySQLの場合

SELECT UNIX_TIMESTAMP();
SELECT UNIX_TIMESTAMP('2019-04-01 05:06:07');

※結果
1554062767
1554062767

SQLiteの場合

SELECT STRFTIME('%s', CURRENT_TIMESTAMP);
SELECT STRFTIME('%s', DATETIME('2019-04-01 05:06:07', '-9 HOURS'))

※結果
1554062767
1554062767