मारियाडीबी में, CONVERT_TZ()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो डेटाटाइम मान को एक समय क्षेत्र से दूसरे समय क्षेत्र में परिवर्तित करता है।
जब आप फ़ंक्शन को कॉल करते हैं, तो आप तीन तर्क पास करते हैं:समय, समय क्षेत्र से . कनवर्ट करने के लिए , और समय क्षेत्र से . में कनवर्ट करने के लिए ।
सिंटैक्स
वाक्य रचना इस प्रकार है:
CONVERT_TZ(dt,from_tz,to_tz)
जहां dt
डेटाटाइम एक्सप्रेशन है, from_tz
से convert में कनवर्ट करने का समय क्षेत्र है , और to_tz
को . में बदलने का समय क्षेत्र है ।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00');
परिणाम:
+-------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', '+00:00', '+10:00') | +-------------------------------------------------------+ | 2021-05-10 11:00:00 | +-------------------------------------------------------+
यहां, मूल समय क्षेत्र +00:00 है, और हमने इसे +10:00 में बदल दिया है।
यदि हम किसी भिन्न प्रारंभ समय क्षेत्र का उपयोग करते हैं तो यहां क्या होता है:
SELECT CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00');
परिणाम:
+-------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', '+03:00', '+10:00') | +-------------------------------------------------------+ | 2021-05-10 08:00:00 | +-------------------------------------------------------+
नामांकित समय क्षेत्र
नामित समय क्षेत्रों का उपयोग किया जा सकता है, लेकिन इसके लिए यह आवश्यक है कि विभिन्न समय क्षेत्र तालिकाओं को लोड किया गया हो।
जब टाइम ज़ोन टेबल नहीं होते हैं तो यहां क्या होता है आबादी:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');
परिणाम:
+-------------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') | +-------------------------------------------------------------+ | NULL | +-------------------------------------------------------------+
परिणाम null
है , क्योंकि समय क्षेत्र तालिकाओं में कोई समय क्षेत्र डेटा नहीं है।
यहाँ फिर से वही प्रश्न है, लेकिन इस बार समय क्षेत्र तालिकाओं में डेटा के साथ:
SELECT
CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham');
परिणाम:
+-------------------------------------------------------------+ | CONVERT_TZ('2021-05-10 01:00:00', 'GMT', 'Pacific/Chatham') | +-------------------------------------------------------------+ | 2021-05-10 13:45:00 | +-------------------------------------------------------------+
सीमा से बाहर डेटाटाइम मान
यदि मान समर्थित TIMESTAMP
. से बाहर है तो कोई रूपांतरण नहीं होगा रेंज ('1970-01-01 00:00:01'
करने के लिए '2038-01-19 05:14:07'
UTC) जब from_tz
यूटीसी के लिए।
उदाहरण:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00');
परिणाम:
+-------------------------------------------------------+ | CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+10:00') | +-------------------------------------------------------+ | 2040-05-10 01:00:00 | +-------------------------------------------------------+
अमान्य तर्क
यदि कोई तर्क अमान्य है, CONVERT_TZ()
रिटर्न null
।
उदाहरण:
SELECT CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00');
परिणाम:
+-------------------------------------------------------+ | CONVERT_TZ('2040-05-10 01:00:00', '+00:00', '+90:00') | +-------------------------------------------------------+ | NULL | +-------------------------------------------------------+
इस मामले में, मैंने डेटाटाइम एक्सप्रेशन को अमान्य समय क्षेत्र में बदलने की कोशिश की (+90:00
), और इसलिए null
लौटा दिया गया।
अशक्त तर्क
यदि कोई तर्क null
है , परिणाम null
. है :
SELECT
CONVERT_TZ(null, '+00:00', '+90:00') AS "1",
CONVERT_TZ('2021-05-10 01:00:00', null, '+90:00') AS "2",
CONVERT_TZ('2021-05-10 01:00:00', '+00:00', null) AS "3";
परिणाम:
+------+------+------+ | 1 | 2 | 3 | +------+------+------+ | NULL | NULL | NULL | +------+------+------+
अनुपलब्ध तर्क
कॉलिंग CONVERT_TZ()
तर्कों की गलत संख्या के साथ, या बिना कोई तर्क पारित किए त्रुटि उत्पन्न होती है:
SELECT CONVERT_TZ();
परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'CONVERT_TZ'