SQLiteのTIMESTAMP型のフィールド値用にPerlのDateTime、DateTime::Format::MySQLモジュールで現在時刻文字列を生成
スポンサードリンク
SQLite使っていてUPDATEした瞬間の時刻を記録するときに、自前で日付文字列生成しなくてはならないので、どうするんだっけかとど忘れしてしまったので、ここに書いておこう。ここに書いておくと、Googleで検索できるので便利なんですよね。
use DateTime; use DateTime::Format::MySQL; my $dt = DateTime->now(); my $date = DateTime::Format::MySQL->format_datetime($dt); print "$date\n"; exit; __END__
実行例(2008-08-24 23:24に実行):
$ sqldate.pl 2008-08-24 14:24:09 $
$dtにDateTimeオブジェクト入れたあと、DateTime::Format::MySQLでMySQL用日付文字列が生成される。これはSQLiteの日付文字列をUTCで運用しているならばそのまま使える。
SQLiteの日付文字列は、たとえば、ctime DEFAULT CURRENT_TIMESTAMP みたいな設定したならば、INSERT時には勝手にUTCでの文字列がデフォルト値として入るので、DB上ではこれに従うのがいいと考えます。
DBのTIMESTAMP型のフィールドからローカル時間に変換するには、
SQLiteのTIMESTAMP型のフィールド値をSQLiteのdatetime関数で日本時間に変換 - CLの日記 [d.hatena.ne.jp]
SQLiteのTIMESTAMP型のフィールド値をPerlのDateTimeモジュールで日本時間に変換 - CLの日記 [d.hatena.ne.jp]
のどちらかの方法を使って可能です。
スポンサードリンク
トラックバック(0)
トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2574
コメントする