脱力系備忘録BloG ホーム » データベース »SQLITE3でUNIXタイムスタンプを日付文字列に変換する

SQLITE3でUNIXタイムスタンプを日付文字列に変換する  

SQLITE3で日付を扱う際にテキスト型ではなく数値型でUNIXタイムスタンプを格納している場合があります。
それを、日付文字列形式で取得する方法です。
●UNIXタイムスタンプを日付形式文字列に変換する関数
datetime(数値型項目名, 'unixepoch', 'localtime')

たとえば、数値型項目「timestamp」にUNIXタイム「1595516400」が入っている場合、
select datetime(timestamp, 'unixepoch', 'localtime') from テーブル名;
としたら「2020-07-24 00:00:00」が出力されます。

●日付文字列を任意の表記に整える関数
strftime(フォーマット文字列, 日付文字列)

たとえば、先ほどの項目を「9999年99月99日 99時99分」と出力したい場合、
select strftime('%Y年%m月%d日 %H時%M分', datetime(timestamp, 'unixepoch', 'localtime')) from テーブル名;
としたら「2020年07月24日 00時00分」が出力されます。

その他、datetime()関数で現在日時を取得することもできます。
select datetime('now');
select datetime(current_timestamp);
上記二つは同じ内容(現在日時)が返ります。
注意点としては返ってくる時間のタイムゾーンがUTC(日本時間からマイナス9時間)です。
日本時間で取得したい場合は「localtime」を付けます。
select datetime('now','localtime');

さらに、datetime()関数は日時の計算もできます。
select datetime('now','+7 days', 'localtime');
このように書くと現在日時から7日後の日時が出力されます。月をまたがる場合もちゃんと計算してくれます。もちろん、マイナス計算もできます。
なお、先ほど
select datetime('now','localtime');
とすれば日本時間で出力されますと説明しました。
日本時間(タイムゾーンJST)はUTCより9時間進んでいますので、
select datetime('now','+9 hours');
とすれば同じ内容が出力されます。

もし時間が必要ない場合は「date()」関数もあります。
select date(current_timestamp);
select date(current_date);
select date('now');
これらはすべて同じ内容を返します。

これらの関数の詳細はhttps://sqlite.org/lang_datefunc.htmlこちらをご覧ください。
関連記事

category: データベース

この記事へのコメント

コメントの投稿

非公開コメント

コメントは全て管理人が内容を確認してから表示されます(非公開コメント除く)。
内容によっては表示されない場合がありますことご了承願います。

プロフィール

お問い合わせ

最新記事

最新コメント

▲ Pagetop