2013-01-04 15 views
5

सेंट्रल यूरोपीय डेलाइट सेविंग टाइम मार्च में पिछले रविवार को शुरू होता है। हमने अपने घड़ियों को 02:00 से 03:00 तक सेट किया है। यदि मैं डेटाबेस अनुरोध में टाइमस्टैम्प कैल्क्यूशन करता हूं तो क्या होता है - 01:59 बजे कहें?डेलाइट सेविंग टाइम के साथ टाइमस्टैम्प गणना

UPDATE sessions SET aliveuntil = (CURRENT_TIMESTAMP + INTERVAL '1' MINUTE) WHERE id = ? 

क्या मुझे परिणाम या 02:00 के रूप में 03:00 मिलते हैं?

और अगर हम अपने घड़ियों को 03:00 से 02:00 तक सेट करते हैं तो आसपास के रास्ते के बारे में क्या?

SELECT id FROM sessions WHERE aliveuntil < (CURRENT_TIMESTAMP - INTERVAL '1' MINUTE) 

समय 02:00 करने के लिए 03:00 से बदल के बाद ... क्या 02:00 पर (CURRENT_TIMESTAMP - INTERVAL '1' MINUTE) साथ क्या होता है? क्या यह 02:59 या 01:59 है?

इसे कैसे संभाला जाना चाहिए? ओरेकल डेटाबेस 11 जी रिलीज 11.2.0.2.0 द्वारा सर्वोत्तम अभ्यास और यह कैसे संभाल रहा है (मेरे विशेष मामले में)?

उत्तर

3

यदि मैं उनके दस्तावेज़ों को सही ढंग से समझ रहा हूं, तो यह इस बात पर निर्भर करता है कि डेटाबेस में तालिका/कॉलम कैसे सेट किए जाते हैं। यदि स्तंभ ज़ोन के साथ उपयोग करने के लिए सेटअप हैं, तो ओरेकल स्वचालित रूप से सही/प्रासंगिक मान निर्धारित करता है। आपके उपर्युक्त उदाहरण में यदि कॉलम liveuntil में यह सेटिंग है, तो यदि आप 1:59 पर 1 मिनट जोड़ना चाहते हैं, तो समय 3:00 तक अपडेट हो जाएगा।

यहाँ एक उपयोगी लेख मैं इस विषय पर पाया जाता है:

http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm

स्क्रॉल लेख के नीचे करने के लिए नीचे और आप के लिए क्या देख रहे हैं देखना चाहिए।

यहाँ लेख का एक वर्ग मैं प्रासंगिक पाया था:

उदाहरण के लिए, संयुक्त राज्य अमेरिका, समय की पूर्वी क्षेत्र में 3:00:00-01:59:59 से परिवर्तन जब डेलाइट सेविंग टाइम प्रभाव में आता है। 02:00:00 और 02:59:59 एएम के बीच अंतराल मौजूद नहीं है। उस अंतराल में मान अमान्य हैं।

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