2013-08-16 3 views
18

कैसे मैं mysql में प्राप्त कर सकते हैंMysql FROM_UNIXTIME यूटीसी के रूप में

FROM_UNIXTIME 
/GMT के रूप में

? तिथि कनेक्शन के समय क्षेत्र में वापस आती है।

मैं कनेक्शन के टाइमज़ोन को बदलना नहीं चाहता हूं।

उत्तर

15

आप समय से आगे समय क्षेत्र सेटिंग से बेहतर होगा:

SET time_zone='UTC'; 
select FROM_UNIXTIME(1277942400); 

कारण यह है कि स्थानीय समय क्षेत्र से जुड़े रूपांतरण हानिकारक हो सकते हैं।

+0

'SET time_zone = '+00: 00'' मेरे लिए काम किया। अगर आप इसे संरक्षित करना चाहते हैं तो मार्टिस्स रदीस उत्तर देखें। – lepe

12

मेरी समाधान था

SELECT CONVERT_TZ(FROM_UNIXTIME(1277942400), @@session.time_zone,'UTC') 

अगर CONVERT_TZ अशक्त देता है, यकीन है कि mysql के समय क्षेत्र के तालिका भर जाता है बनाने:

zypper install mysql-community-server-tools 
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql 
+0

मैं समाधान – Erbureth

+0

की statelessness चाहते क्या एक महान समाधान :) –

+1

यह राज्यविहीन है, लेकिन, अस्पष्ट तिथियों के साथ विफल रहता है के रूप में conver_ttz नहीं पता कर सकते स्रोत टाइमस्टैम्प का टाइमज़ोन ऑफ़सेट। –

1

मैं जानता हूँ कि यह उत्तर दिया गया है, लेकिन अभी भी मैं योगदान करना चाहते हैं:

आप तो: वहाँ docs here में इस का एक उदाहरण ("ध्यान दें" UNIX_TIMESTAMP() धारा के तहत 4 पैरा के साथ शुरू देखें) NOW() और FROM_UNIXTIME() इत्यादि जैसे कार्यों के साथ यूटीसी टाइमज़ोन समय का उत्पादन करने के लिए अपने सर्वर को नहीं, आपको time_zone जैसे @ मैट जॉनसन ने सेट करना होगा।

ऐसी कोई बात नहीं है जिसका उन्होंने उल्लेख नहीं किया: SET time_zone = timezone; केवल वर्तमान कनेक्शन के लिए टाइमज़ोन सेट करता है। SET GLOBAL time_zone = '+00:00' का उपयोग करें यदि आप इन फ़ंक्शंस को डिफ़ॉल्ट रूप से यूटीसी में अपनी तिथियों को वापस/परिवर्तित करना चाहते हैं, तो आपको प्रत्येक यूटीसी आधारित तिथियों को सहेजने के लिए हर बार टाइमज़ोन सेट करने की आवश्यकता नहीं थी।

अपने वर्तमान TIME_ZONE सेटिंग्स की जाँच करें: SELECT @@global.time_zone, @@session.time_zone;

MySQL :: MySQL 5.5 Reference Manual :: 10.6 MySQL Server Time Zone Support

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