Saya mencoba melakukan SELECT DATE(ColumnName)
, namun ini tidak berfungsi untuk TIMESTAMP
kolom † karena disimpan dalam UTC dan tanggal UTC digunakan alih-alih mengonversi ke tanggal lokal. Saya perlu memilih baris yang berada pada tanggal tertentu di zona waktu saya, jadi menggabungkan jawaban saya untuk pertanyaan lain ini dengan jawaban Balaswamy Vaddeman untuk pertanyaan ini , inilah yang saya lakukan:
Jika Anda menyimpan tanggal sebagai DATETIME
Kerjakan saja SELECT DATE(ColumnName)
Jika Anda menyimpan tanggal sebagai TIMESTAMP
Muat data zona waktu ke MySQL jika Anda belum melakukannya. Untuk server Windows, lihat tautan sebelumnya. Untuk server Linux, FreeBSD, Solaris, dan OS X Anda akan melakukan:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Kemudian format kueri Anda seperti ini:
SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
Anda juga dapat meletakkan ini di WHERE
bagian kueri seperti ini (tetapi perhatikan bahwa indeks pada kolom itu tidak akan berfungsi):
SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
(Jelas menggantikan America/New_York
zona waktu lokal Anda.)
† Satu-satunya pengecualian untuk ini adalah jika zona waktu lokal Anda adalah GMT dan Anda tidak melakukan penghematan siang hari karena waktu lokal Anda sama dengan UTC.