답변:
몇 년 전에 비슷한 문제가 있었는데, 할 수 있다는 것을 알게되었습니다
ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
해봐 ( postgresql.conf
@a_horse_with_no_name 덕분 에 모든 데이터베이스의 솔루션에 대해 데이터베이스별로 작동합니다 .)
기본 설정은 로케일과 무관 합니다. 그러나 initdb
원하는대로 설정 한 후에 는에서 직접 변경할 수 있습니다 postgresql.conf
.
@ swasheck의 의견에 따르면 내 설정에 따라 다음과 같이 기록되었습니다.
test=# SHOW lc_ctype;
lc_ctype
--------------------
Hungarian, Hungary
(1 row)
test=# SHOW lc_time;
lc_time
--------------------
Hungarian, Hungary
(1 row)
설정 datestyle
은 다음과 같은 효과가 있습니다.
SET datestyle TO "ISO, MDY";
SELECT current_date;
date
------------
2012-06-21
(1 row)
이제 이것은 실제로 예상되지 않으며 다른 서버에서도 동일합니다 en_US.UTF8
. 노력하는 것은 "ISO, DMY"
, 너무 저를 제안 "ISO"
부분은 생성 할 때 다소 다른 부분을 무시입니다 출력 . 들면 입력 아래 표에 요약 값으로, 이는, 예상되는 효과가있다 :
input values
'2016/01/21' '01/21/2016' '21/01/2016' output
──────────────────────────────────────────────────────────────────────
ISO, YMD OK -- -- 2016-01-21
ISO, DMY -- OK -- 2016-01-21
ISO, MDY -- -- OK 2016-01-21
-주어진 입력 스타일로 인해 주어진 datestyle
설정에 오류가 발생 함을 의미 합니다.
설명서를주의 깊게 읽으면 datestyle
부분적으로 상충되는 설정 임을 알 수 있습니다 .
역사적 이유로이 변수에는 출력 형식 사양 (ISO, Postgres, SQL 또는 독일어)과 연 / 월 / 일 순서 (DMY, MDY 또는 YMD)의 입력 / 출력 사양이라는 두 가지 독립 구성 요소가 포함됩니다.
나에게 그것은 약간의 실험을 통해 자신의 요구에 맞는 것을 찾아야한다는 것을 의미하지만 가장 좋은 방법은 기본값을 그대로두고 항상 명확한 입력 형식을 사용하는 것입니다. 이 두 가지가 있습니다 'YYYY-MM-DD'
와 'YYYYMMDD'
. 나는이 IRL을 사용하더라도 전자를 선호합니다.)
참고 :의 datestyle
설정 (및 기타 런타임 설정)은 postgresql.conf
에 의해 재정의 ALTER DATABASE bla SET datestyle ...
되거나 단일 데이터베이스에 대해 영구적으로 SET datestyle TO ...
설정 되거나 현재 세션에 대해 설정되어 재정의 될 수 있습니다 . 후자는 다른 날짜 형식의 일부 타사 데이터를 가져올 때 유용 할 수 있습니다.
감사합니다 @a_horse_with_no_name | @dezso | @ ypercubeᵀᴹ
방법 1 : 데이터베이스 당 날짜 스타일 설정
show datestyle;
현재 날짜 스타일 "ISO, DMY "또는 "ISO, MDY"표시
이제 아래 쿼리에서 설정된 postgres DMY 또는 MDY 에서 원하는 것에 따라
ALTER DATABASE "my_database_name" SET datestyle TO "ISO, DMY";
또는
ALTER DATABASE "my_database_name" SET datestyle TO "ISO, MDY";
가장 중요한 단계 : 항상 datestyle 재시작 후 postgres를 설정 한 후
sudo service postgresql restart
또는
sudo /etc/init.d/postgresql restart
구성 테스트 가능
DMY를 아래 쿼리로 설정하면 쿼리가 작동합니다.
쿼리 : select '20/12/2016'::date
출력 : "2016-12-20"
또는
아래에서 MDY를 설정하면 쿼리가 작동합니다.
쿼리 : select '12/19/2016'::date
출력 : "2016-12-19"
방법 2 : 영구적으로 : 구성 파일에 설정 한 내용은 나중에 생성 할 모든 데이터베이스에 설정됩니다.
/etc/postgresql/9.3/main/postgresql.conf 세트에서
datestyle = 'iso, dmy'
또는 datestyle = 'iso, mdy'
가장 중요한 단계 : 항상 datestyle 재시작 후 postgres를 설정 한 후
sudo service postgresql restart
또는
sudo /etc/init.d/postgresql restart
구성 테스트 가능
DMY를 아래 쿼리로 설정하면 쿼리가 작동합니다.
쿼리 : select '20/12/2016'::date
출력 : "2016-12-20"
또는
아래에서 MDY를 설정하면 쿼리가 작동합니다.
쿼리 : select '12/19/2016'::date
출력 : "2016-12-19"