Yıllar önce çok benzer bir sorun yaşadım ve sonra yapabileceğimi öğrendim.
ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
Bunu dene. (Bu, tüm veritabanlarınız için bir çözüm için, veritabanı bazında çalışır, bu parametreyi sizin için ayarlayın postgresql.conf
- @a_horse_with_no_name.)
Lütfen varsayılan ayarın yerel ayardan bağımsız olmadığını unutmayın . Ancak, initdb
istediğini ayarladıktan sonra , içinde kendiniz değiştirebilirsiniz postgresql.conf
.
@ swasheck adlı kullanıcının yorumu şunu belirtti:
test=# SHOW lc_ctype;
lc_ctype
--------------------
Hungarian, Hungary
(1 row)
test=# SHOW lc_time;
lc_time
--------------------
Hungarian, Hungary
(1 row)
ayar datestyle
aşağıdaki etkiye sahiptir:
SET datestyle TO "ISO, MDY";
SELECT current_date;
date
------------
2012-06-21
(1 row)
Şimdi bu gerçekten beklenmiyor - ve diğer sunucularda da aynı en_US.UTF8
. Denemek "ISO, DMY"
de bana, "ISO"
bir çıktının üretilmesi sırasında parçanın diğer parçanın aşağı ya da yukarı baskın olduğunu gösteriyor . İçin giriş tablosunun altındaki özetlendiği gibi değerlere, bu beklenen bir etkiye sahiptir:
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
- yukarıda verilen girdi stilinin verilen datestyle
ayar için bir hatayla sonuçlandığı anlamına gelir .
Belgeleri dikkatlice okuduktan sonra datestyle
, bunun kısmen birbiriyle çelişen bir ayar olduğu görülebilir :
Tarihsel nedenlerden dolayı, bu değişken iki bağımsız bileşen içerir: çıktı formatı belirtimi (ISO, Postgres, SQL veya Almanca) ve yıl / ay / gün siparişi için giriş / çıkış belirtimi (DMY, MDY veya YMD).
Benim için, kişinin deneylerine göre kendi gereksinimlerine uygun olanı bulması gerektiği anlamına geliyor - ancak en iyi yol varsayılanda bırakmak ve her zaman net olmayan bir giriş biçimi kullanmaktır. Bunlardan ikisi 'YYYY-MM-DD'
ve 'YYYYMMDD'
. Eski olanı tercih ediyorum - bu IRL'yi kullanırken bile
Not: datestyle
ayarı (ve diğer çalışma zamanı ayarları), tek bir veritabanı için kalıcı olarak ayarlayarak veya geçerli oturum için ayarlayarak postgresql.conf
geçersiz kılınabilir . Bu sonuncusu, bazı üçüncü taraf verilerini farklı bir tarih biçiminde içe aktarırken yararlı olabilir.ALTER DATABASE bla SET datestyle ...
SET datestyle TO ...