यदि यह शून्य उत्पन्न करता है तो TZ तालिकाएँ सेट नहीं की गई हैं:
SELECT CONVERT_TZ(now(),'US/Eastern','US/Central');
यदि आपके पास टाइम ज़ोन टेबल सेट नहीं है, तो आप उपयोगकर्ता तालिका में घंटेऑफ़सेट को अपडेट कर सकते हैं और फिर कर सकते हैं:
select utc_timezone() - interval user_timezone_offset_in_hours hour
from userinfo a
where user_id = 999;
हालांकि आपको उपयोगकर्ता के समय क्षेत्र को अपडेट करने के लिए अभी भी एक तरीके की आवश्यकता होगी।
यदि आप इसे वेब एप्लिकेशन के लिए लिख रहे हैं तो आप जावास्क्रिप्ट के माध्यम से समय क्षेत्र प्राप्त कर सकते हैं, यहां एक लेख यह बताता है कि कैसे (यह कोशिश नहीं की है लेकिन ऐसा लगता है कि यह काम करेगा)।
उपरोक्त 'अंतराल' के संबंध में कुछ स्पष्टीकरण...
MySQL में एक और ट्रिक कंस्ट्रक्शन INTERVAL
. का उपयोग है कीवर्ड, उदाहरण के लिए सबसे अच्छा दिखाया गया है (संख्यात्मक मान एक अभिव्यक्ति या फ़ील्ड मान हो सकता है)
select now() today, now() - interval 1 day yesterday;
+---------------------+---------------------+
| today | yesterday |
+---------------------+---------------------+
| 2011-05-26 13:20:55 | 2011-05-25 13:20:55 |
+---------------------+---------------------+
आप उन्हें जोड़ सकते हैं और जैसे चाहें घटा सकते हैं, यही कारण है कि मैं कभी नहीं दिनांक/समय जोड़ने/घटाने/रूपांतरित कार्यों से परेशान हैं
select now() a, now() - interval 1 day + interval 4 hour + interval 8 minute b;
+---------------------+---------------------+
| a | b |
+---------------------+---------------------+
| 2011-05-26 13:24:16 | 2011-05-25 17:32:16 |
+---------------------+---------------------+
आप ऋणात्मक संख्याओं का उपयोग कर सकते हैं (नकारात्मक समय क्षेत्र ऑफ़सेट के लिए अच्छा होना चाहिए) ये वही हैं:
select now() - interval 1 month a, now() + interval -1 month b;
+---------------------+---------------------+
| a | b |
+---------------------+---------------------+
| 2011-04-26 13:38:05 | 2011-04-26 13:38:05 |
+---------------------+---------------------+