Tôi đã thử làm a SELECT DATE(ColumnName)
, tuy nhiên điều này không hoạt động đối với TIMESTAMP
các cột † vì chúng được lưu trữ trong UTC và ngày UTC được sử dụng thay vì chuyển đổi thành ngày cục bộ. Tôi cần chọn các hàng vào một ngày cụ thể trong múi giờ của mình, vì vậy kết hợp câu trả lời của tôi cho câu hỏi khác này với câu trả lời của Balaswamy Vaddeman cho câu hỏi này, đây là những gì tôi đã làm:
Nếu bạn đang lưu trữ ngày tháng như DATETIME
Cứ làm đi SELECT DATE(ColumnName)
Nếu bạn đang lưu trữ ngày tháng như TIMESTAMP
Tải dữ liệu múi giờ vào MySQL nếu bạn chưa làm như vậy. Đối với máy chủ Windows, hãy xem liên kết trước đó. Đối với máy chủ Linux, FreeBSD, Solaris và OS X, bạn sẽ làm như sau:
mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root -p mysql
Sau đó, định dạng truy vấn của bạn như sau:
SELECT DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York'))
Bạn cũng có thể đặt điều này trong WHERE
một phần của truy vấn như thế này (nhưng lưu ý rằng các chỉ mục trên cột đó sẽ không hoạt động):
SELECT * FROM tableName
WHERE DATE(CONVERT_TZ(`ColumnName`, 'UTC', 'America/New_York')) >= '2015-02-04'
(Rõ ràng là thay thế America/New_York
cho múi giờ địa phương của bạn.)
† Ngoại lệ duy nhất cho điều này là nếu múi giờ địa phương của bạn là GMT và bạn không tiết kiệm ánh sáng ban ngày vì giờ địa phương của bạn giống với UTC.