내가 설치 PostgreSQL 9
했고 그것이 보여주는 시간은 서버 시간보다 1 시간 늦습니다.
러닝 Select NOW()
쇼 :2011-07-12 11:51:50.453842+00
서버 날짜는 다음을 표시합니다. Tue Jul 12 12:51:40 BST 2011
1 시간 늦었지만에 표시된 시간대 phppgadmin
는 다음과 같습니다.TimeZone Etc/GMT0
나는 postgresql.conf
및 설정에 들어 가려고 시도했습니다.
시간대 = GMT
그런 다음 다시 시작하지만 변경 사항은 없습니다.
서버 시간대를 사용했을 것이라고 생각했지만 분명히 그렇지 않은 아이디어가 있습니까?!
해결책! : GMT
이전으로 설정했고 한 시간 뒤였습니다. 주변을 검색 한 후로 설정해야한다는 것이 밝혀졌습니다 Europe/London
. 이것은 영국 서머 타임의 +1 시간을 고려하지만 GMT는 그렇지 않습니다!
답변
시간대는 세션 매개 변수입니다. 따라서 현재 세션의 시간대를 변경할 수 있습니다.
문서를 참조하십시오 .
set timezone TO 'GMT';
또는 SQL 표준에 더 가깝게 따라 SET TIME ZONE
명령을 사용하십시오 . 위의 코드에서 “timezone”이라는 단어를 사용하는 “TIME ZONE”에 대한 두 단어에 유의하십시오.
SET TIME ZONE 'UTC';
문서는 차이점을 설명합니다.
SET TIME ZONE은 SQL 표준에 정의 된 구문을 확장합니다. 표준은 숫자 시간대 오프셋 만 허용하는 반면 PostgreSQL은보다 유연한 시간대 지정을 허용합니다. 다른 모든 SET 기능은 PostgreSQL 확장입니다.
답변
다음 중에서 선택하십시오 timezone
.
SELECT * FROM pg_timezone_names;
그리고 set
아래 주어진 예 와 같이 :
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
postgres
위의 문장 대신 DB 이름을 사용하십시오 .
답변
Postgres 9.1에서 시간대 변경을 완료하려면 다음을 수행해야합니다.
1.- /usr/share/postgresql/9.1/의 “timezones”폴더에서 적절한 파일을 검색합니다. 제 경우에는 “America.txt”가 될 것입니다. 여기에서 해당 영역에서 가장 가까운 위치를 검색하고 왼쪽 열의 첫 글자.
예 : “뉴욕”또는 “파나마”에있는 경우 “EST”가됩니다.
# - EST: Eastern Standard Time (Australia)
EST -18000 # Eastern Standard Time (America)
# (America/New_York)
# (America/Panama)
2.-postgresql.conf
파일 에서 “시간대”줄의 주석 처리를 제거하고 다음과 같이 시간대를 입력합니다.
#intervalstyle = 'postgres'
#timezone = '(defaults to server environment setting)'
timezone = 'EST'
#timezone_abbreviations = 'EST' # Select the set of available time zone
# abbreviations. Currently, there are
# Default
# Australia
3.- Postgres 다시 시작
답변
구성 매개 변수 이름
이 답변은 다음을 사용하여 Postgres 관련 구성 매개 변수를 설정하는 방법을 보여줍니다.
SET timezone TO 'UTC';
… timezone
SQL 명령이 아닌 구성 매개 변수의 이름입니다.
이것에 대한 문서를 참조하십시오 .
표준 SQL 명령
또는 SQL 사양에 정의 된 SQL 명령을 사용할 수 있습니다 SET TIME ZONE
.. 이 구문에서 단어 쌍은 TIME ZONE
“시간대”(실제 SQL 명령 대 매개 변수 이름)를 대체하며 “TO”는 없습니다.
SET TIME ZONE 'UTC';
이 명령과 위의 명령은 모두 현재 세션에 대해서만 값을 설정하는 동일한 효과를 갖습니다. 변경 사항을 영구적으로 적용하려면이 형제 답변을 참조하십시오 .
이것에 대한 문서를 참조하십시오 .
시간대 이름
적절한 시간대 이름을 지정할 수 있습니다 . 대부분은 대륙 / 지역입니다.
SET TIME ZONE 'Africa/Casablanca';
…또는…
SET TIME ZONE 'America/Montreal';
3 또는 4 편지 피 같은 약어 EST
또는 IST
그들이 어느 쪽도 표준화되지도 독특한 같다. 시간대 이름 목록은 Wikipedia를 참조하십시오 .
현재 영역 가져 오기
세션의 현재 시간대를 보려면 다음 명령문 중 하나를 시도하십시오. 기술적으로 우리는 SHOW
런타임 매개 변수를 표시하는 명령을 호출합니다 .
SHOW timezone ;
…또는…
SHOW time zone ;
미국 / 태평양
답변
이전 답변 외에도 pgAdmin III 도구를 사용하면 다음과 같이 시간대를 설정할 수 있습니다.
- 도구> 서버 구성> postgresql.conf 를 통해 Postgres 구성을 엽니 다.
- 입력 시간대를 찾아 두 번 클릭하여 엽니 다.
- 가치 변경
- 서버를 다시로드하여 구성 변경 사항을 적용합니다 (상단 또는 서비스를 통해 재생 버튼).
답변
많은 타사 클라이언트에는 Postgres 서버 및 / 또는 세션 설정과 겹치는 자체 시간대 설정이 있습니다.
예를 들어 ‘IntelliJ IDEA 2017.3′(또는 DataGrips)을 사용하는 경우 시간대를 다음과 같이 정의해야합니다.
‘DB 소스 속성’-> ‘고급’탭-> ‘VM 옵션’: -Duser.timezone = UTC + 06 : 00
그렇지 않으면 다른 곳에서 설정 한 내용에도 불구하고 ‘UTC’가 표시됩니다.
답변
질문과 관련이 없을 수도 있지만 CST를 사용하고 시스템 시간대를 원하는 tz (America / …)로 설정 한 다음 postgresql conf에서 시간대 값을 ‘localtime’으로 설정하고 매력으로 작동했습니다. , current_time 적절한 시간 인쇄 (Ubuntu 16의 Postgresql 9.5)