フタなしカンヅメ

徒然なるままに @happytar0

SQLiteの日付にハマる

この前初めてSQLiteを使ってみたのですが思わぬところでハマってしまいました。

SQLiteではよくある話のようで日付処理に関する問題です。
型の概念がほとんどないらしく、数値と文字列の二つで管理されている?ようです。テーブルを見てみるとDATE型とか表示されるので一見、型があるように思うのですが・・・。

当然日付に関しても数値か文字列でしか管理されないというわけです。
なので、挿入する際に数値か文字列のどちからで統一しておかないと、めんどうなことになりそうです。
日付文字列に関してのフォーマットもあまり柔軟ではないようです。

例えば関数に渡すとき

# YYYY-MM-DD HH:MM:SS これならOK
1999-02-01 23:01:01
# YYYY-M-D H:M:S これだとだめ
1999-2-1 23:1:1

julianday関数で数値化して格納するか、文字列のフォーマットを統一して格納するという感じでしょうか・・・?
文字列のフォーマットを統一する際は、アブリ側でやることになるのでしょうか?PHPならば、mktime、sprintf、strftime、strtotime関数などが使えそうです。RubyならDateクラスなどに同様のメソッドがあるみたい?です。

参考
shiromaru しろまる: SQliteで日付の演算ができるみたいだ
rakuto.net - rakuto Resources and Information. This website is for sale!