M.C.P.C.

―むり・くり―プラスコミュニケーション(更新終了)


| トップページ |

2008年8月24日 23:23

SQLiteのTIMESTAMP型のフィールド値用にPerlのDateTime、DateTime::Format::MySQLモジュールで現在時刻文字列を生成

このエントリーをはてなブックマークに追加 mixiチェック

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]

のどちらかの方法を使って可能です。

投稿 大野 義貴 [Perl] | |

トラックバック(0)

トラックバックURL: http://blog.dtpwiki.jp/MTOS/mt-tb.cgi/2574

コメントする