Development Tip

시간대없이 Now ()

yourdevel 2020. 12. 29. 07:59
반응형

시간대없이 Now ()


added_at유형 의 열 timestamp without time zone있습니다. 기본값은 현재 날짜-시간이지만 시간대는 없습니다. 이 함수 now()는 시간대도 반환합니다.

그 문제를 어떻게 해결합니까?


SELECT now()::timestamp

그게 다야. 캐스트는 타임 스탬프를 해당 시간대의 현재 타임 스탬프로 변환합니다. 이것이 Postgres에서 표준 SQL 함수LOCALTIMESTAMP 가 구현되는 방식이기도합니다 .

여러 시간대에서 작업하지 않으면 잘 작동합니다. 에 다른 스위치 timestamptz에 대한 added_at. 차이점?


다음과 같이 할 수 있습니다.

SELECT now() AT TIME ZONE current_setting('TimeZone');
SELECT now() AT TIME ZONE 'Europe/Paris';
SELECT now() AT TIME ZONE 'UTC';

"added_at"열에 대해 그것이 어떤 의미인지 확실하지 않습니다. 거의 항상 부동 타임 스탬프가 아닌 절대 타임 스탬프 (시간대가있는 타임 스탬프)를 원합니다.


아래 사항에 대한 답변 수정 :

  1. 예, 정당한 이유가없는 한 시간대 (절대 시간)와 함께 타임 스탬프를 사용해야합니다.

  2. 클라이언트 시간대는 위와 같이 SHOW TimeZone또는 current_setting(...)지정됩니다 .

매뉴얼을 훑어 보는 데 시간을 할애하십시오-이 모든 것을 아주 잘 다룹니다.


"현재 날짜 / 시간" :

CURRENT_TIME 및 CURRENT_TIMESTAMP는 시간대와 함께 값을 제공합니다. LOCALTIME 및 LOCALTIMESTAMP는 시간대없이 값을 제공합니다.

참조 URL : https://stackoverflow.com/questions/20812091/now-without-timezone

반응형