2011-05-25 12 views
24

मैं निम्न त्रुटि संदेशमैं पोस्टग्रेज़ में दिनांक प्रारूप कैसे बदलूं? सीमा से बाहर दिनांक/समय क्षेत्र मूल्य::

त्रुटि मिल रही है "13/01/2010" संकेत: शायद आप किसी दूसरे "datestyle" सेटिंग की जरूरत है।

मैं प्रारूप डीडी में मेरी तारीख प्राप्त करना चाहते हैं/MM/YYYY

+1

आप इन तिथियों को कैसे सम्मिलित कर रहे हैं? Psql में, या एक प्रोग्रामिंग भाषा का उपयोग, या क्या? –

+0

मैं पोस्टग्रेस कॉपी – deltanovember

उत्तर

45
SHOW datestyle; 

DateStyle 
----------- 
ISO, MDY 
(1 row) 

INSERT INTO container VALUES ('13/01/2010'); 
ERROR: date/time field value out of range: "13/01/2010" 
HINT: Perhaps you need a different "datestyle" setting. 

SET datestyle = "ISO, DMY"; 
SET 

INSERT INTO container VALUES ('13/01/2010'); 
INSERT 0 1 

SET datestyle = default; 
SET 

http://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-DATESTYLE

DateStyle - Sets the display format for date and time values, as well as the rules for interpreting ambiguous date input values. For historical reasons, this variable contains two independent components: the output format specification (ISO, Postgres, SQL, or German) and the input/output specification for year/month/day ordering (DMY, MDY, or YMD).

बेशक यह स्पष्ट इनपुट प्रारूप (आईएसओ 8601) का उपयोग करने के लिए सबसे अच्छा है, लेकिन वहाँ इसे समायोजित करने के रूप में आप की जरूरत है कोई समस्या नहीं है।

7

आप यूरोपीय (दिन/महीना/वर्ष) के लिए तिथि शैली सेट कर सकते हैं:

SET DateStyle TO European; 

मैं के खिलाफ सलाह देंगे हालांकि यह। मैं आम तौर पर प्रारूपों के बीच रूपांतरित करने की कोशिश करता हूं, और डेटा स्रोत में आईएसओ स्वरूपित तिथियां रखता हूं। आखिरकार, यह केवल प्रतिनिधित्व का मामला है, अलग-अलग डेटा की बात नहीं।

+1

का उपयोग कर रहा हूं आपको डेटाबेस में प्रारूपित तिथियां रखना चाहिए। उन्हें DATE फ़ील्ड के रूप में स्टोर करें, और उन्हें आवश्यकतानुसार आपको आवश्यक प्रारूप में पार्स करें। –

1

संपादित:

इस कॉपी, मान्य इनपुट प्रारूप है सर्वर विन्यास से परिभाषित किया गया है और या तो के रूप में बेरी द्वारा या समायोजन करके वर्णित वर्तमान सत्र सेट कमांड प्रयोग करने के लिए बदला जा सकता है का उपयोग करते समय सर्वर विन्यास। मैनुअल में

DateStyle विवरण:
http://www.postgresql.org/docs/current/static/runtime-config-client.html#GUC-DATESTYLE

निम्नलिखित वास्तविक स्थिति के लिए मान्य नहीं है, लेकिन आज (या टाइमस्टैम्प) का उपयोग करते समय शाब्दिक मैं संदर्भ के लिए इसे ध्यान में रखते हुए कर रहा हूँ वैसे भी

उन्हें बदलने के लिए हमेशा प्रारूप मुखौटा निर्दिष्ट करें। अन्यथा आपके बयान पोर्टेबल नहीं हैं और आवश्यक रूप से प्रत्येक इंस्टॉलेशन पर नहीं चलेंगे।() फ़ंक्शन

UPDATE some_table 
    SET date_column = to_date('13/01/2010', 'dd/mm/yyyy') 
WHERE pk_column = 42; 

UPDATE some_table 
    SET date_column = DATE '2011-05-25' 
WHERE pk_column = 42; 

आप शाब्दिक प्रारूप को बदल नहीं सकते हैं, तो आप TO_DATE लागू करने के लिए की जरूरत है यह नहीं है:

तारीख शाब्दिक के लिए

ANSI SQL मानक इस तरह है आप क्या कर रहे हैं आपको हमें पूर्ण SQL कथन दिखाएं जो त्रुटि उत्पन्न करता है।

+0

मैं पोस्टग्रेस कॉपी – deltanovember

+0

@deltanovember का उपयोग कर रहा हूं: मेरा संपादन देखें –

संबंधित मुद्दे