日付の扱い方
SQLiteには、他のデータベースに存在するDATE型やDATETIME型のようなストレージクラスは存在しない。そのため、SQLiteでは日付をTEXT型、REAL型、INTEGER型として扱う必要がある。各型における値は以下となる。
■ TEXT
ISO8601形式の文字列で保持する。("YYYY-MM-DD HH:MM:SS.SSS")
■ REAL
ユリウス日数として保持する。
紀元前4714年11月24日のグリニッジの正午からの日数。
■ INTEGER
Unix時間として保持する。
1970-01-01 00:00:00UTCからの秒数。
上記のように日付や時刻を扱える型はないが、日付や時刻を取得するdate()
、time()
、datetime()
などの関数はある。
例えば、現在の日時を取得する場合は以下のように書ける。
datetime('now', 'localtime');
これでYYYY-MM-DD HH:MM:SS
の形式で現在日時が取得できる。
ここで、localtime
を付けないとUTC時刻になってしまう。UTCとは協定世界時のことであり、日本標準時とは9時間の時差がある。
つまり日本標準時に直すには、UTC時刻から+9 hours
する必要がある。