मैं एक कर की कोशिश की SELECT DATE(ColumnName)
है, लेकिन इस काम नहीं करता है के लिए TIMESTAMP
कॉलम † क्योंकि वे यूटीसी में जमा हो जाती और यूटीसी तारीख बजाय स्थानीय तारीख को परिवर्तित करने का प्रयोग किया जाता है। मुझे उन पंक्तियों का चयन करने की आवश्यकता थी जो मेरे समय क्षेत्र में एक विशिष्ट तिथि पर थीं, इसलिए इस प्रश्न के उत्तर को बलस्वामी वडमन के इस प्रश्न के साथ जोड़कर , यही मैंने किया:
यदि आप दिनांक के रूप में संग्रहीत कर रहे हैं DATETIME
बस करो SELECT DATE(ColumnName)
यदि आप दिनांक के रूप में संग्रहीत कर रहे हैं TIMESTAMP
यदि आपने ऐसा पहले से नहीं किया है तो समय क्षेत्र डेटा को MySQL में लोड करें । विंडोज सर्वर के लिए पिछला लिंक देखें। Linux, FreeBSD, Solaris और OS X सर्वर के लिए जो आप करेंगे:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
फिर अपनी क्वेरी को इस तरह प्रारूपित करें:
SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
आप इसे WHERE
क्वेरी के भाग में भी डाल सकते हैं (लेकिन ध्यान दें कि उस कॉलम पर अनुक्रमणिका काम नहीं करेगी):
SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
( America/New_York
अपने स्थानीय समय क्षेत्र के लिए स्पष्ट रूप से स्थानापन्न ।)
Zone इसका एकमात्र अपवाद यह है कि यदि आपका स्थानीय समय क्षेत्र GMT है और आप डेलाइट बचत नहीं करते हैं क्योंकि आपका स्थानीय समय UTC के समान है।