質問: sqlite 3.7.1 のタイムゾーンについて windows xp に xampp をインストールし、phpとsqliteでページを作成しているのですが、 sqlite のタイムゾーンの取り扱いで不可解な点があるのでお教え願います。 「update xxx set aa='aa', udate='2010-11-21 19:15:10' where id= '321'」というsqlを実行すると、sqliteには udate がタイムゾーン分の時間が遅れて記録されます。 当然「udate='2010-11-21 19:15:10'」は、sql実行時の時間です。 sqliteの確認は、firefoxのツール・sqlite manager v0.65 です。 windows xpのタイムゾーンはjst-9で合っているし、時計の時間は合っています。 php には「 date_default_timezone_set( 'asia/tokyo' ); 」を記述しているので間違いはないと思います。 実は「update xxx set aa='aa', udate=current_timestamp where id= '321'」を実行した時に、同じように時間がずれたので「current_timestamp」が理由だと思い php でタイムスタンプを作ってsqlを実行しても同じようにずれたの sqlite の仕様なのかな? と思っていますが、気持ちが悪いので正しく入力できる方法があれば直したいと思っています。 宜しくお願いします。
回答: 時刻関係のdefaultは、gmtを返すようです。 フォーマット関数で localtime を指定すれば、サーバーos設定の現地時間になります。 select strftime("%y-%m-%d %h:%m:%s",current_timestamp, 'localtime') http://opengroup.org/onlinepubs/007908799/xsh/strftime.html