5

私は今日まで DBIx::Class を使用したことがないので、まったくの初心者です。

これが可能かどうかはわかりませんが、基本的に SQLite データベースにタイムスタンプ列を持つテーブルがあります。タイムスタンプ列のデフォルト値は「CURRENT_TIMESTAMP」です。SQLite はこれを GMT タイムゾーンで保存しますが、私のサーバーは CDT タイムゾーンです。

正しいタイムゾーンでタイムスタンプを取得するための私の SQLite クエリは次のとおりです。

select datetime(timestamp, 'localtime') from mytable where id=1;

データベースから「タイムスタンプ」フィールドを取得するたびに、「MyTable」の DBIx スキーマで強制的に日時関数を適用することが可能かどうか疑問に思っています。

クックブックでは->search() 関数を使えばできるようですが、search()、find()、all()、 find_or_new()、またはデータベースからこの列を取得する関数は、datetime() SQLite 関数を適用しますか?

DBIx::Class には優れたドキュメントがあるようです。私は、検索するのに適切な場所/ものを見つけられないほど、初心者だと思います。

前もって感謝します!

4

1 に答える 1

2

このようにInflateColumn::DateTimeをタイムスタンプとともに使用しましたが、動作することを確認できましたが、これが逆になっているのだろうか。

列が UTC の場合は、列に UTC のマークを付けると、ロード時に UTC 時間になるはずです。次に、DateTime で set_timezone を設定すると (おそらく出力の問題になります。ローカルにゾーン化されていることに注意してください)、現地時間に設定すると、必要な調整が行われます。

于 2010-03-16T19:50:57.603 に答える