Intenté hacer una SELECT DATE(ColumnName)
, sin embargo, esto no funciona para las TIMESTAMP
columnas † porque están almacenadas en UTC y se usa la fecha UTC en lugar de convertir a la fecha local. Necesitaba seleccionar filas que estaban en una fecha específica en mi zona horaria, por lo que combinando mi respuesta a esta otra pregunta con la respuesta de Balaswamy Vaddeman a esta pregunta , esto es lo que hice:
Si está almacenando fechas como DATETIME
Solo haz SELECT DATE(ColumnName)
Si está almacenando fechas como TIMESTAMP
Cargue los datos de la zona horaria en MySQL si aún no lo ha hecho. Para servidores Windows, consulte el enlace anterior. Para servidores Linux, FreeBSD, Solaris y OS X, haría lo siguiente:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Luego formatee su consulta de esta manera:
SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
También puede poner esto en la WHERE
parte de la consulta como esta (pero tenga en cuenta que los índices en esa columna no funcionarán):
SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
(Obviamente, sustituya America/New_York
por su zona horaria local).
† La única excepción a esto es si su zona horaria local es GMT y no tiene horario de verano porque su hora local es la misma que UTC.