postgres 기본 표준 시간대
설치했습니다.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 'UTC';
의사가 차이점을 설명합니다.
SET TIME ZONE은 SQL 표준에 정의된 구문을 확장합니다.표준은 Postgre 동안 숫자 시간대 오프셋만 허용합니다.SQL을 사용하면 시간대를 보다 유연하게 지정할 수 있습니다.다른 모든 SET 기능은 Postgre입니다.SQL 확장입니다.
선택timezone
출처:
SELECT * FROM pg_timezone_names;
그리고.set
아래의 예와 같이:
ALTER DATABASE postgres SET timezone TO 'Europe/Berlin';
다음 대신 DB 이름 사용postgres
상술한 바와 같이
구성 매개 변수 이름
이 대답은 다음을 사용하여 Postgres별 구성 매개 변수를 설정하는 방법을 보여줍니다.
SET timezone TO 'UTC';
…어디에timezone
는 SQL 명령이 아니라 구성 매개 변수의 이름입니다.
표준 SQL 명령
또는 SQL 사양으로 정의된 SQL 명령을 사용할 수 있습니다.SET TIME ZONE
이 구문에서 한 쌍의 단어는TIME ZONE
"timezone"(실제 SQL 명령 대 매개 변수 이름)을 대체하고 "TO"는 없습니다.
SET TIME ZONE 'UTC';
이 명령과 위 명령은 모두 현재 세션의 값만 설정하기 위해 동일한 효과를 가집니다.변경 내용을 영구적으로 변경하려면 다음 형제자매 답변을 참조하십시오.
표준시 이름
적절한 표준 시간대 이름을 지정할 수 있습니다.대부분은 대륙/지역입니다.
SET TIME ZONE 'Africa/Casablanca';
…또는…
SET TIME ZONE 'America/Montreal';
다음과 같은 3개 또는 4개의 문자 축약어를 사용하지 않습니다.EST
또는IST
표준화되지도 않고 고유하지도 않기 때문입니다.표준 시간대 이름 목록은 위키백과를 참조하십시오.
현재 영역 가져오기
세션의 현재 표준 시간대를 보려면 다음 문장 중 하나를 사용하십시오.엄밀히 말하면 런타임 매개 변수를 표시하기 위해 명령을 호출하는 것입니다.
SHOW timezone ;
…또는…
SHOW time zone ;
미국/태평양
Postgres 9.1의 시간대 변경을 완료하려면 다음 작업을 수행해야 합니다.
1.- /usr/share/postgresql/9.1/의 "시간대" 폴더에서 해당 파일을 검색합니다. 이 경우 "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.- 우편물 다시 시작
이전 답변 외에도 도구 pgAdmin III를 사용하는 경우 다음과 같이 시간대를 설정할 수 있습니다.
- [도구] > [서버 구성] > [postgresql.conf]를 통해 Postgres 구성을 엽니다.
- 입력 시간대를 찾고 두 번 클릭하여 엽니다.
- 값 변경
- 서버를 다시 로드하여 구성 변경 사항 적용(위쪽 또는 서비스를 통해 재생 버튼)
대부분의 타사 클라이언트는 Postgres 서버 및/또는 세션 설정과 겹치는 자체 표준 시간대 설정을 가지고 있습니다.
예를 들어 'IntelliJ IDEA 2017.3'(또는 DataGrips)을 사용하는 경우 다음과 같이 시간대를 정의해야 합니다.
'DB 원본 속성' -> '고급' 탭 -> 'VM 옵션': -Duser.timezone=UTC+06:00
그렇지 않으면 다른 곳에서 설정한 내용에도 불구하고 'UTC'가 표시됩니다.
영구적으로 변경하려는 Windows 10/11 사용자의 경우 파일 위치는 다음과 같습니다.
C:\Program Files\PostgreSQL\<your-postgres-version>\data\postgresql.conf
나에게 그것은 구체적으로 다음과 같았습니다.
C:\Program Files\PostgreSQL\14\data\postgresql.conf
그러면 텍스트 편집기에서ctrl-f
찾기 위해서.timezone
합니다. (은 " " " 를 실행하면 수 있습니다." (" 이음실찾니합다재다수설있정니습다면을") 를 실행하면 .SELECT * FROM pg_timezone_names
):
log_timezone = 'UTC'
그리고.
timezone = 'UTC'
데이터베이스 GUI 또는 CLI에서 다음 쿼리를 실행하여 구성 파일을 다시 로드합니다.
select pg_reload_conf()
다음을 실행하여 영구적인 변경 사항 확인:
show timezone
질문과 관련이 없을 수도 있지만 CST를 사용하고 시스템 시간대를 원하는 tz(America/...)로 설정한 다음 postgresql conf에서 시간대의 값을 'local time'으로 설정하면 적절한 시간을 current_time으로 출력하는 매력적인 역할을 했습니다(Ubuntu 16의 Postgresql 9.5).
사용 중인 역할의 표준 시간대를 설정하면 어떻게 됩니까?
ALTER ROLE my_db_user IN DATABASE my_database
SET "TimeZone" TO 'UTC';
이것이 무슨 소용이 있습니까?
의 경우: postgresql.conf에서 postgres14+를 합니다.timezone = 'Europe/Budapest'
언급URL : https://stackoverflow.com/questions/6663765/postgres-default-timezone
'programing' 카테고리의 다른 글
Xcode에서 경고를 억제하는 방법이 있습니까? (0) | 2023.05.24 |
---|---|
현재 폴더 경로 가져오기 (0) | 2023.05.24 |
가독성은 URL에서 텍스트를 추출하는 데 어떤 알고리즘을 사용합니까? (0) | 2023.05.24 |
Apache poi를 사용하여 중앙 셀 병합 및 정렬 (0) | 2023.05.24 |
Google Colab에서 여러 파일 또는 전체 폴더를 다운로드하려면 어떻게 해야 합니까? (0) | 2023.05.24 |