एक timestamp
का स्ट्रिंग प्रस्तुतिकरण (=timestamp without time zone
) आपकी लोकेल सेटिंग्स पर निर्भर करता है। इसलिए, अस्पष्टता से बचने के लिए डेटा त्रुटियाँ या पोस्टग्रेज़ अपवाद उत्पन्न करते हैं, आपके पास दो विकल्प हैं:
1.) ISO 8601 प्रारूप का उपयोग करें , जो किसी भी . के साथ समान कार्य करता है लोकेल या DateStyle
सेटिंग:
'2013-08-20 14:52:49'
आपको स्ट्रिंग को शाब्दिक रूप से स्पष्ट रूप से डालना पड़ सकता है जहां उपयोग के मामले के आधार पर डेटा प्रकार को संदर्भ से प्राप्त नहीं किया जा सकता है:
'2013-08-20 14:52:49'::timestamp
2.) स्ट्रिंग को timestamp
में बदलें to_timestamp()
. का उपयोग करके मेल खाने वाले टेम्पलेट पैटर्न के साथ:
to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')
यह timestamptz
returns लौटाता है , वर्तमान समयक्षेत्र सेटिंग को मानते हुए। आम तौर पर (जैसे एक असाइनमेंट में) प्रकार को तदनुसार मजबूर किया जाता है। timestamp
के लिए , इसका मतलब है कि समय ऑफसेट को छोटा कर दिया गया है और आपको अपेक्षित मूल्य मिलता है। फिर से, यदि लक्ष्य प्रकार को संदर्भ से प्राप्त नहीं किया जा सकता है, तो आपको स्पष्ट रूप से कास्ट करना पड़ सकता है:
to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss')::timestamp
चूंकि यह केवल समय की भरपाई करता है, इसका परिणाम अपेक्षित मूल्य में होता है। या AT TIME ZONE
का उपयोग करें अपनी पसंद के समय क्षेत्र के साथ निर्माण करें:
to_timestamp('20/8/2013 14:52:49', 'DD/MM/YYYY hh24:mi:ss') AT TIME ZONE 'UTC'
जबकि लक्ष्य समय क्षेत्र आपके वर्तमान timezone
. के समान है सेटिंग, कोई परिवर्तन नहीं होता है। अन्यथा परिणामी टाइमस्टैम्प को तदनुसार स्थानांतरित कर दिया जाता है। आगे पढ़ना:
- रेल और पोस्टग्रेएसक्यूएल में टाइम ज़ोन को पूरी तरह नज़रअंदाज़ करना