본문 바로가기
Python/Python FAQ

Python 오프셋이 없는 날짜와 오프셋을 인식하는 날짜를 빼는 것은 불가능합니다., Can't subtract offset-naive and offset-aware datetimes

by 베타코드 2023. 10. 30.
반응형

질문


PostgreSQL에서는 시간대를 인식하는 timestamptz 필드가 있습니다. 테이블에서 데이터를 가져올 때 현재 시간을 빼서 나이를 구하려고 합니다.

문제는 datetime.datetime.now()datetime.datetime.utcnow() 모두 시간대를 인식하지 않는 타임스탬프를 반환하는 것 같아서 다음과 같은 오류가 발생합니다:

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

이를 피하는 방법은 있을까요 (가능하면 제3자 모듈을 사용하지 않고)?

편집: 제안해주신 방법에 감사드립니다. 하지만 시간대를 조정하려고 시도하면 오류가 발생하는 것 같아서 PG에서 시간대를 인식하지 않는 타임스탬프를 사용하고 항상 다음과 같이 삽입하기로 결정했습니다:

NOW() AT TIME ZONE 'UTC'

이렇게 하면 모든 타임스탬프가 기본적으로 UTC로 설정됩니다 (비록 조금 더 귀찮은 방법이지만).


답변


시간대 인식을 제거해보았습니까?

출처: http://pytz.sourceforge.net/

naive = dt.replace(tzinfo=None)

시간대 변환을 추가해야 할 수도 있습니다.

편집: 이 답변의 나이를 고려해주세요. 파이썬 3에서 시간대 정보를 추가하는 대신 제거하는 답변은 다음과 같습니다. https://stackoverflow.com/a/25662061/93380

반응형

댓글