Ich habe versucht, a auszuführen SELECT DATE(ColumnName)
, dies funktioniert jedoch nicht für TIMESTAMP
Spalten †, da diese in UTC gespeichert sind und das UTC-Datum verwendet wird, anstatt in das lokale Datum zu konvertieren. Ich musste Zeilen auswählen, die sich an einem bestimmten Datum in meiner Zeitzone befanden. Um meine Antwort auf diese andere Frage mit der Antwort von Balaswamy Vaddeman auf diese Frage zu kombinieren, habe ich Folgendes getan:
Wenn Sie Daten als speichern DATETIME
Mach einfach SELECT DATE(ColumnName)
Wenn Sie Daten als speichern TIMESTAMP
Laden Sie die Zeitzonendaten in MySQL, falls Sie dies noch nicht getan haben. Für Windows-Server siehe den vorherigen Link. Für Linux-, FreeBSD-, Solaris- und OS X-Server würden Sie Folgendes tun:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Formatieren Sie dann Ihre Abfrage wie folgt:
SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
Sie können dies auch in den WHERE
Teil der Abfrage wie folgt einfügen (beachten Sie jedoch, dass Indizes für diese Spalte nicht funktionieren):
SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
(Ersetzen America/New_York
Sie offensichtlich Ihre lokale Zeitzone.)
† Die einzige Ausnahme ist, wenn Ihre lokale Zeitzone GMT ist und Sie keine Sommerzeit machen, da Ihre Ortszeit mit UTC übereinstimmt.