オフセットナイブとオフセットアウェアの日付時刻を減算できません 質問する

オフセットナイブとオフセットアウェアの日付時刻を減算できません 質問する

PostgreSQL にタイムゾーン対応フィールドがありますtimestamptz。テーブルからデータを取得するときに、現在の時刻を減算して、その経過時間を取得したいと考えています。

私が抱えている問題は、 と の両方datetime.datetime.now()datetime.datetime.utcnow()タイムゾーンを認識しないタイムスタンプを返すようで、その結果、次のエラーが発生することです。

TypeError: can't subtract offset-naive and offset-aware datetimes 

これを回避する方法はありますか (できればサードパーティのモジュールを使用しない)。

編集: ご提案ありがとうございます。ただし、タイムゾーンを調整しようとするとエラーが発生するようです。そのため、PG でタイムゾーンを認識しないタイムスタンプを使用し、常に次のように挿入します。

NOW() AT TIME ZONE 'UTC'

こうすることで、すべてのタイムスタンプがデフォルトで UTC になります (これを行うのは面倒ですが)。

ベストアンサー1

タイムゾーンの認識を削除してみましたか?

からhttp://pytz.sourceforge.net/

naive = dt.replace(tzinfo=None)

タイムゾーン変換も追加する必要があるかもしれません。

編集: この回答の古さに注意してください。Python 3 でタイムゾーン情報を削除するのではなく追加する回答を以下に示します。https://stackoverflow.com/a/25662061/93380

おすすめ記事