sqlite3 + PHP にて、日時処理

sqlite3 + PHP にて、日付・時間処理

sqlite3 にはフィールドに DateTime みたいなものが無いらしい、PupSQLite なんかでいじっていると、DateTime 型が設定できるので存在すると思い込んでしまっていたが、Where で取得できないことで気付いた次第
2012-12-03 の値に対して Where ( AAA > '2012-12-1' ) とかやってたら引っかからないわけで

んで、日付の格納を「文字列」にするか「数値」にするか、という事になるが、

「文字列」で扱う場合、YYYY-MM-DD みたいに、ゼロ埋めを忘れずに行う必要があるくらいで、集計も SUBSTR で切り取って Group すれば簡単に済んだりします。ただ、サイズや速度は???

今回、php 側の time() をそのまま「数値」として保存する形をとってみた
数値なのでなにかとシンプルぅ~ とか進めていたら・・・集計で躓いた

年月や年で抽出するには、datetime と strftime 関数で、日時文字列化すればよいようです

SELECT strftime('%Y-%m', datetime(datetime(項目, 'unixepoch'), 'localtime')) AS MonthGroup
SELECT strftime('%Y', datetime(datetime(項目, 'unixepoch'), 'localtime')) AS YearGroup

コメント