Postgres 9.5에서 연도를 실험하면서 아래 결과를 보게되어 놀랐습니다. 0001
(0 년 없음)0000
.
오프셋 -07:52:58
?
예제 코드입니다. 나는 혼합 사용하는 것을주의 TIMESTAMP WITH TIME ZONE
하고 TIMESTAMP WITHOUT TIME ZONE
, 그래서주의 깊게 읽어 보시기 바랍니다.
SET TIME ZONE 'America/Los_Angeles' ;
SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0',
TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z',
TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z') ;
("2015-01-01 00:00:00-08","0001-12-31 16:07:02-07:52:58 BC","0001-01-01 00:00:00")
나는 그 두 번째 가치에 놀랐습니다 0001-12-31 16:07:02-07:52:58 BC
. America/Los_Angeles
UTC 오프셋보다 8 시간 뒤인 8 시간 뒤로 가야한다는 것을 알고 -08:00
있습니다. 그러나 -08:00
오프셋 대신입니다 -07:52:58
. 왜?
UTC에서 문제 없음
UTC로 데이터를 입력 할 때 그러한 문제는 없습니다.
SET TIME ZONE 'UTC' ;
SELECT (TIMESTAMP WITH TIME ZONE '2015-01-01 00:00:00.0',
TIMESTAMP WITH TIME ZONE '0001-01-01 00:00:00.0Z',
TIMESTAMP WITHOUT TIME ZONE '0001-01-01 00:00:00.0Z');
("2015-01-01 00:00:00+00","0001-01-01 00:00:00+00","0001-01-01 00:00:00")
년 제로 없음
그건 그렇고, 날짜 부분이 올바른 것 같습니다. 0000
“BC”와“AD”시대 사이의 중심이되는 해는 아직 없습니다 . 0001 년의 첫 순간을 취하고 1 시간을 빼면 1 년이 걸리지 0001 BC
않습니다.
SET TIME ZONE 'UTC' ;
INSERT INTO moment_ -- TIMESTAMP WITH TIME ZONE.
VALUES ( TIMESTAMP '0001-01-01 00:00:00.0Z' - INTERVAL '1 hour' ) ;
SET TIME ZONE 'UTC' ;
TABLE moment_ ;
결과는 올해 0001 BC
우리가에서 뛰어 있도록 0001
하는 0001 BC
; 제로 년 없음 0000
.
"0001-12-31 23:00:00+00 BC"
0000
유효한 연도 값을 가지지 만 사용 여부를 주장하지는 않음) ). PostgreSQL이 0 년이없는 양식을 사용하는 것은 사실이지만, "일년은 0이 아닌 1을 시작합니다"라고 말할 수는 없습니다. 예를 들어 천문학적 데이터를 위해 이들 사이를 쉽게 번역 할 수 있습니다. (이것은 1 CE 이후 세 번째 천년기에 남아 있기 때문에 세 번째 천년기는 여전히 2001 년 하나의 방법에 시작)