programing

시간대가없는 PostgreSQL 변경 유형 타임 스탬프-> 시간대 포함

randomtip 2021. 1. 15. 08:07
반응형

시간대가없는 PostgreSQL 변경 유형 타임 스탬프-> 시간대 포함


질문은 짧습니다. 시간대가없는 열 유형 타임 스탬프에 데이터가 이미있는 경우 유형을 시간대가있는 타임 스탬프로 설정하면 postgresql이이 데이터로 무엇을합니까?


현재 값을 현지 시간으로 유지하고 시간대를 현지 시간의 오프셋으로 설정합니다.

create table a(t timestamp without time zone, t2 timestamp with time zone);
insert into a(t) values ('2012-03-01'::timestamp);
update a set t2 = t;
select * from a;
          t          |           t2           
---------------------+------------------------
 2012-03-01 00:00:00 | 2012-03-01 00:00:00-08

alter table a alter column t type timestamp with time zone;
select * from a;
           t            |           t2           
------------------------+------------------------
 2012-03-01 00:00:00-08 | 2012-03-01 00:00:00-08

Alter Table 의 매뉴얼에 따르면 :

만약 [USING 절가된다] 생략 기본 변환 새로 이전 데이터 유형에서 할당 캐스트와 동일하다.

날짜 / 시간 유형 설명서에 따름

간의 변환 시간대없이 소인시간대와 타임 스탬프는 일반적으로 가정 시간대없이 타임 스탬프 값이 촬영하거나 제공해야 시간대 의 현지 시각. 를 사용하여 변환에 대해 다른 시간대를 지정할 수 있습니다 AT TIME ZONE.


시간대를 명시 적으로 지정하는 것이 좋습니다. 타임 스탬프가 UTC (시간대 제외) 로되어 있다면 클라이언트 나 서버의 시간대가 여기에서 모든 것을 엉망으로 만들 수 있다는 사실에주의해야합니다. 대신 다음과 같이 작성하십시오.

ALTER TABLE a ALTER COLUMN t TYPE TIMESTAMP WITH TIME ZONE USING t AT TIME ZONE 'UTC'

참조 URL : https://stackoverflow.com/questions/9772825/postgresql-alter-type-timestamp-without-time-zone-with-time-zone

반응형