SQLiteには日付型というものがありません。

そのため、テキスト型のフィールドに日付を格納するのが通例です。

日付処理関数

SQLiteはテキスト型の日付(timestring)を処理するための5つの日付処理関数を備えています。

  • strftime()
  • date()
  • time()
  • datetime()
  • julianday()

strftime()はもっとも汎用的な日付処理関数で、残り4つの関数はstrftime()の特定フォーマットを別関数として切り出したものとなっています。

date(timestring, …) = strftime(‘%Y-%M-%D’, timestring, …)
time(timestring, …) = strftime(‘%H:%M:%S’, timestring, …)
datetime(timestring, …) = strftime(‘%Y-%M-%D %H:%M:%S’, timestring, …)
julianday(timestring, …) = strftime(‘%J’, timestring, …)

これらの関数が認識可能な形式(timestring)は以下のようになります。

timestring

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 年-月-日T時:分
YYYY-MM-DDTHH:MM:SS 年-月-日T時:分:秒
YYYY-MM-DDTHH:MM:SS.SSS 年-月-日T時:分:秒.マイクロ秒
HH:MM 時:分
HH:MM:SS 時:分:秒
HH:MM:SS.SSS 時:分:秒.マイクロ秒
now 現在時刻
DDDDDDDDDD ユリウス暦日または Unix タイムスタンプ

format

日付関数にはtimestringとともに、日付の書式を表す「format」を渡します。

%d 月における日 (00-31)
%f 秒とマイクロ秒 (SS.SSS)
%H 時間 (00-24)
%j 年における日 (001-366)
%J ユリウス暦日
%m 月 (01-12)
%M 分 (00-59)
%s 1970-01-01 00:00 UTC を起点とする秒
%S 秒 (00-59)
%w 週の日 (0-6, 0 は日曜)
%W 年における週 (00-53)
%Y 年 (0000-9999)
%% % そのもの

modifier

SQLiteの日付処理関数ではmodfierによって、加減算、変換、特定日付の取得などができるようになっています。

加減算

1.NNN days
2.NNN hours
3.NNN minutes
4.NNN.NNNN seconds
5.NNN months
6.NNN years

年始、月始、日始(0時)

7.start of month
8.start of year
9.start of day

その他変換

10.weekday N 次の○曜日。N={0:日曜日, 1:月曜日…}
11.unixepoch timestring を Unix タイムスタンプとして扱います。unixepoch を指定せずに DDDDDDDDDD 形式の timestring を渡すと、ユリウス暦日として処理されます。
12.localtime 渡された timestring を UTC での日時と解釈し、TZ 環境変数などで指定されたローカルのタイムゾーンに変換します
13.utc 渡された timestring をローカルタイムゾーンでの日時と解釈し、UTC に変換します

 

参考

http://www.tamandua-webtools.net/sqlite3-date.html

http://www.dbonline.jp/sqlite/function/index6.html

 

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です