2016-08-08 2 views
0

시간대가있는 열 유형 타임 스탬프가있는 데이터베이스가 있습니다. 나는 다음과 같은 날짜 삽입 :PostgreSQL 날짜 시간대 문제

2016년 7월 31일 20시 0분 0초 :

2016년 8월 1일 그리니치 표준시 00시 00분 0초 그러나

를 데이터베이스에, 그것은으로 표시됩니다 -04

어떤 일이 벌어지고 있는지 알 수 있습니까?

미리 감사드립니다.

+0

입력 결과가 디스플레이에 표시됩니까? 몇 시간의 차이는 시간대 문제 (그러므로'-04')가 될 것이지만, 08-16에서 07-31로가는 것은 약간입니다. BTW, 완벽하게 서비스 가능한 날짜 유형이있는 날짜에 대해 타임 스탬프 열을 사용해야하는 이유는 무엇입니까? –

+0

안녕하세요 - 죄송합니다. 잘못된 입력을 붙여넣고 내 질문을 업데이트했습니다. –

+2

4 시간대의 시간대 조정, 동일한 타임 스탬프가 있지만 -04 시간대에 표시됩니다. –

답변

1

이름에도 불구하고 TIMESTAMP WITH TIME ZONE은 실제로 시간대를 저장하지 않습니다. 세션의 시간대를 사용하여 UTC로 표준화하고 UTC를 저장합니다. 검색시 UTC에서 세션 시간대로 변환됩니다.

SET TIME ZONE 명령을 사용하여 세션 표준 시간대를 변경할 수 있습니다. 가급적이면 the standard IANA time zone identifiers을 사용해야합니다. 예를 들어 :

SET TIME ZONE 'Europe/Paris' 

또는

SET TIME ZONE 'UTC' 

은 또한 어떤 변환을 수행하지 않는 대신 TIMESTAMP [WITHOUT TIME ZONE] 유형을 사용합니다.