2009-07-21 18 views
34

पर SYSDATE के लिए यूटीसी मूल्य कैसे प्राप्त करें शायद एक क्लासिक ... क्या आप ओरेकल पर SYSDATE के यूटीसी मूल्य को पुनर्प्राप्त करने के लिए एक आसान चाल जान लेंगे (सर्वश्रेष्ठ 8 वें संस्करण पर भी कुछ काम कर रहा होगा)।ओरेकल

अभी के लिए मैं कस्टम समारोह :(

चीयर्स है,

स्टीफन

उत्तर

30

आप

SELECT SYS_EXTRACT_UTC(TIMESTAMP '2000-03-28 11:30:00.00 -02:00') FROM DUAL; 

उपयोग कर सकते हैं तुम भी अपना समय क्षेत्र बदलने की आवश्यकता हो सकती

ALTER SESSION SET TIME_ZONE = 'Europe/Berlin'; 

या पढ़ा यह

SELECT SESSIONTIMEZONE, CURRENT_TIMESTAMP FROM dual; 
+1

ठीक है, चाल SYSDATE से कन्वर्ट करने के लिए है। तो सबसे पहले आपको किसी भी तरह से SESSIONTIMEZONE स्थापित करने की आवश्यकता होगी, और SYS_EXTRACT_UTC के ऑफसेट मान प्राप्त करने के लिए उस ज्ञान का उपयोग करें - है ना? – stic

+0

हां, आप इस लिंक को ऑरकल से देख सकते हैं जहां डेटाटाइम और टाइम जोन पैरामीटर: http://www.oracle.com/technology/obe/obe9ir2/obe-nls/datetime/datetime.htm – Jonathan

+1

मैंने उत्तर को बढ़ा दिया है एक उपन्यास बग। –

32
select sys_extract_utc(systimestamp) from dual; 

, हालांकि ओरेकल 8 पर काम नहीं करेंगे।

19

आमतौर पर, मैं DATE कॉलम के साथ काम करता हूं, न कि बड़े लेकिन अधिक सटीक TIMESTAMP।

निम्नलिखित वर्तमान यूटीसी तिथि को उसी के रूप में वापस कर देगा - एक DATE।

CAST(sys_extract_utc(SYSTIMESTAMP) AS DATE) 

यूटीसी दिनांकों के साथ कार्य करना, क्योंकि मैं समय क्षेत्रों की जटिलता के बारे में चिंता करने की ज़रूरत नहीं है महान है। उपयोगकर्ता को केवल अंतिम प्रदर्शन ऑफसेट या अन्य परेशानी की आवश्यकता होती है।

+0

मैंने इस (समकक्ष) के साथ 2 तिथियों की तुलना करने की कोशिश की और अपेक्षित नतीजे नहीं मिल रहे थे, इसलिए मुझे लगता है कि अभी भी एक समय घटक लौटा है। काम मुझे TRUNC कथन का उपयोग किया गया था के लिए किया था क्या: * का चयन करें आइटम कहाँ TRUNC (Create_Date) = ( TRUNC चुनें (sys_extract_utc (SYSTIMESTAMP)) दोहरी से) – DaveK

+2

DATE के स्तंभों में से एक दूसरे को सटीकता के साथ एक समय घटक शामिल करना से। यह TIMESTAMP कॉलम से भिन्न है जो उस TIMESTAMP स्टोर सटीकता एक सेकंड से अधिक है। दरअसल, उपरोक्त में TRUNC जोड़ना वह है जो आप करना चाहते हैं यदि आप समय घटक को छोटा करना चाहते हैं। –

1

आप sysdate साथ सिर्फ एक तारीख के बजाय एक टाइमस्टैम्प चाहते हैं, आप एक समय क्षेत्र का उपयोग कर systimestamp निर्दिष्ट कर सकते हैं:

select systimestamp at time zone 'UTC' from dual 

आउटपुट: 29-AUG-17 06.51.14.781998000 PM UTC