timezome없이 유닉스 시간을 PostgreSQL의 Timstamp로 변환하는 방법은 무엇입니까?


17

시간대가 인도의 시간대로 설정된 서버에서 PostgreSQL 데이터베이스를 실행 중입니다 (예 : UTC +5 : 30).

다음과 같이 생성 된 테이블에 데이터가 있습니다.

CREATE TABLE "CLOUDDATA"
(
  "CD_Tm_Obs" timestamp without time zone,
  "CD_Avg_Cloud" double precision
)

데이터를 쿼리하고 특정 시간의 값을 가져오고 싶습니다. 내 입력은 유닉스 타임 스탬프가 될 것입니다 (예 : 1970 년 1 월 1 일의 초)

유닉스 시간을 내가 찾은 타임 스탬프로 변환하는 유일한 방법은 다음과 같습니다 select to_timestamp(TRUNC(CAST(1395036000 AS bigint))). 그러나 이것은 시간대로 타임 스탬프를 만듭니다. 내 데이터가에 timestamp without time zone있으므로 결과가 없습니다.

timezome없이 유닉스 시간을 PostgreSQL의 Timstamp로 변환하는 방법은 무엇입니까?

답변:


37

다음은 몇 가지 접근 방식입니다.

TRUNC(), 또는을 필요로하지 않으므로 쿼리를 단순화 했습니다 CAST().

SELECT to_timestamp(1395036000) AT TIME ZONE 'UTC';

SELECT timestamp '1970-01-01 00:00:00' + interval '1395036000 second';

자세한 내용은 다음 링크를 참조하십시오.


두 번째 스 니펫은 RedShift에서도 작동합니다.
지안루카 카사 티
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.