आप एक SQL कथन के साथ वर्तमान MySQL सत्र के लिए समय क्षेत्र सेटिंग पुनः प्राप्त कर सकते हैं:
mysql> SELECT @@session.time_zone;
यदि DBA ने MySQL पर टाइमज़ोन सेट नहीं किया है, तो यह डिफ़ॉल्ट रूप से SYSTEM
के मान पर आ जाएगा। , जो ऑपरेटिंग सिस्टम पर समय क्षेत्र का प्रतिनिधित्व करता है।
http://dev.mysql.com/doc /refman/5.5/hi/time-zone-support.html
अनुसरण करें:
आपके उदाहरण के रूप में एक विधेय में SQL कथन:
select * from mytable where dt > current_ist_datetime
(दिया गया dt
और current_ist_datetime
डेटाटाइप का DATETIME
)मानों की तुलना किसी भी समयक्षेत्र रूपांतरण से स्वतंत्र होगी, क्योंकि DATETIME
से जुड़ी कोई समय क्षेत्र जानकारी नहीं है मूल्य।
यानी, डेटाटाइप DATETIME
. के कॉलम से लौटाया गया मान MySQL सर्वर की time_zone सेटिंग से प्रभावित नहीं है (SELECT @@global.time_zone
) या MySQL सत्र का (SELECT @@session.time_zone
)।
NOW()
. द्वारा लौटाया गया मान हालांकि, सत्र की टाइमज़ोन सेटिंग से फ़ंक्शन प्रभावित होगा।
इसे IST में वापस करने के लिए, सुनिश्चित करें कि सत्र के लिए समय_क्षेत्र सही ढंग से निर्दिष्ट है, उदा.
SET VARIABLES time_zone = "+05:30"
(N.B. यदि सत्र को कनेक्शन पूल से पुनर्प्राप्त किया जाता है और वापस किया जाता है, तो पूल के अन्य उपयोगकर्ता किसी भिन्न time_zone की अपेक्षा नहीं कर सकते हैं;...)
(नोट:उपरोक्त JDBC ड्राइवर द्वारा पेश किए गए भ्रम को पूरी तरह से अनदेखा करता है, जो MySQL के DATETIME डेटाटाइप के कार्यान्वयन और दिनांक ऑब्जेक्ट के जावा कार्यान्वयन के बीच "प्रतिबाधा बेमेल" (अंतर) के कारण होता है। यदि आप JDBC कनेक्शन में DATETIME मान पास कर रहे हैं, यह पूरी तरह 'भ्रम की नोर बॉल' है।)