Я спробував зробити a SELECT DATE(ColumnName), однак це не працює для TIMESTAMPстовпців †, оскільки вони зберігаються в UTC, а дата UTC використовується замість перетворення на локальну дату. Мені потрібно було вибрати рядки, які були в певну дату в моєму часовому поясі, тому поєдную свою відповідь на це інше питання з відповіддю Баласвамі Ваддемана на це запитання , ось що я зробив:
Якщо ви зберігаєте дати як DATETIME
Просто роби SELECT DATE(ColumnName)
Якщо ви зберігаєте дати як TIMESTAMP
Завантажте дані часового поясу в MySQL, якщо ви цього ще не зробили. Для серверів Windows див попереднє посилання. Для серверів 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місцевий часовий пояс.)
† Єдиним винятком з цього є те, що якщо ваш місцевий часовий пояс є GMT, і ви не здійснюєте економію денного часу, оскільки ваш місцевий час збігається з UTC.