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