strftime関数

広告

strftime関数は指定のフォーマットで日付と時刻を取得する為に使用します。書式は次の通りです。

strftime(format, timestring, modifier, modifier, ...)

strftime関数の1番目の引数に出力形式のフォーマットを指定すると、2番目の引数に日付と時刻を表す文字列をフォーマットした結果を返します。(modifierの指定方法は別のページで詳しく見ていきますのでここでは気にしないで下さい)。

指定した日付と時刻のタイムゾーンはUTCとして扱われます。

フォーマットの指定は任意の文字と下記の特殊な文字を組み合わせて指定します。

%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  ユリウス日
%%  %文字そのもの

例として月と日だけを表示するようなフォーマットを指定すると次のようになります。

select strftime('%m月%d日', '2009-08-24 23:10:15');      /* 08月24日 */

strftime関数が'2009-08-24 23:10:15'の日時を'%m月%d日'というフォーマットで返しますのでこのSELECT文では'08月24日'を取得します。

なお他の日付と時刻に関する関数はstrftime関数を使って次のように表すことができます。

date(...)        strftime('%Y-%m-%d', ...)
time(...)        strftime('%H:%M:%S', ...)
datetime(...)    strftime('%Y-%m-%d %H:%M:%S', ...)
julianday(...)   strftime('%J', ...)

日付と時刻を表す文字列

strftime関数の2番目の引数に指定する日付と時刻を表す文字列は次のいずれかの形式で指定します。

YYYY-MM-DD
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSS
YYYY-MM-DDTHH:MM
YYYY-MM-DDTHH:MM:SS
YYYY-MM-DDTHH:MM:SS.SSS
HH:MM
HH:MM:SS
HH:MM:SS.SSS
now
DDDDDDDDDD

例えば'2009-08-22'や'14:10:25'、または'2008-07-01 09:01:45'などです。時刻に関する値が省略された場合は'00:00:00.000'となります。また日付が省略された場合は'2000-01-01'となります。

'now'が指定すると現在の日時と時刻を設定します。(タイムゾーンはUTCです)。

'DDDDDDDDDD'はJulian day(ユリウス日)の形式です。ユリウス日については「julianday関数」を参照して下さい。

サンプル

では実際に試してみます。

現在時刻をミリ秒まで取得してみます。

select strftime('%H:%M:%f', 'now') as strftime;

p8-1

1970年1月1日からの経過秒数を取得します。

select strftime('%s', 'now') as strftime;

p8-2

任意の文字と組み合わせます。

select strftime('%Y年%m月%d日 %H時%M分%S秒', 'now') as strftime;

p8-3

SQLite入門の他の記事を見てみる

( Written by Tatsuo Ikura )