मुझे सालों पहले ऐसी ही समस्या थी, और तब पता चला कि मैं कर सकता हूं
ALTER DATABASE database_name SET datestyle TO "ISO, MDY";
उसकी कोशिश करो। (यह आपके सभी डेटाबेस के समाधान के लिए प्रति डेटाबेस के आधार पर काम करता है, इस पैरामीटर को आप में सेट करें postgresql.conf
- @a_horse_with_no_name के लिए धन्यवाद।)
कृपया ध्यान रखें कि डिफ़ॉल्ट सेटिंग स्थानीय स्वतंत्र नहीं है । हालाँकि, initdb
इसे सेट करने के बाद इसे जो भी चाहिए, आप इसे अपने आप में बदल सकते हैं postgresql.conf
।
@ स्वैसेक की टिप्पणी ने मुझे ध्यान दिलाया कि मेरी सेटिंग्स के साथ:
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
यह आंशिक रूप से परस्पर विरोधी सेटिंग्स की एक जोड़ी है:
ऐतिहासिक कारणों से, इस चर में दो स्वतंत्र घटक होते हैं: आउटपुट प्रारूप विनिर्देश (आईएसओ, पोस्टग्रेज, एसक्यूएल या जर्मन) और वर्ष / माह / दिन के आदेश के लिए इनपुट / आउटपुट विनिर्देश (डीएमवाई, एमडीवाई, या वाईएमडी)।
मेरे लिए इसका मतलब यह है कि किसी एक को ढूंढना होगा जो अपनी आवश्यकताओं को थोड़ा प्रयोग करके फिट करता है - लेकिन सबसे अच्छा तरीका यह है कि इसे डिफ़ॉल्ट पर छोड़ दें और हमेशा एक अस्पष्ट इनपुट प्रारूप का उपयोग करें। इनमें से दो हैं 'YYYY-MM-DD'
और 'YYYYMMDD'
। मैं पूर्व को पसंद करता हूं - यहां तक कि इस IRL का उपयोग करके;)
नोट: datestyle
सेटिंग (और अन्य रनटाइम सेटिंग्स) को एक डेटाबेस से स्थायी रूप से सेट करके, या इसे वर्तमान सत्र के लिए सेट करके postgresql.conf
ओवरराइड किया जा सकता है । यह बाद में उपयोगी हो सकता है जब एक अलग दिनांक प्रारूप के साथ कुछ तीसरे पक्ष के डेटा को आयात किया जाए।ALTER DATABASE bla SET datestyle ...
SET datestyle TO ...