Nếu tôi có một ngày như thế này:MySQL chọn ngày hôm qua
'2013-03-25'
Và tôi muốn viết một truy vấn với WHERE
MySQL là "ngày hôm qua", làm thế nào để làm điều đó?
Nếu tôi có một ngày như thế này:MySQL chọn ngày hôm qua
'2013-03-25'
Và tôi muốn viết một truy vấn với WHERE
MySQL là "ngày hôm qua", làm thế nào để làm điều đó?
Một cách đơn giản để có được ngày hôm qua là sử dụng subdate()
chức năng:
subdate(currentDate, 1)
này nên làm điều đó:
WHERE `date` = CURDATE() - INTERVAL 1 DAY
Tôi nghĩ rằng bạn đang tìm kiếm:
DATE_ADD(date_column, INTERVAL -1 DAY)
thấy https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html
Tôi luôn luôn phải tham khảo một đoạn mã để quấn quanh đầu của tôi một lần nữa.
Đó là phong tục để lưu trữ thời gian biểu trong UTC trong cơ sở dữ liệu. Nhưng thông thường, khi tạo báo cáo, thời gian cần phải được điều chỉnh cho một múi giờ cụ thể.
Sau đây là đoạn tôi sử dụng để hiển thị lựa chọn ngày hôm qua, điều chỉnh cho giờ Thái Bình Dương:
SET @date_start = DATE_SUB((CURDATE() - INTERVAL 1 DAY), INTERVAL 8 HOUR);
SET @date_end = DATE_SUB(CURDATE(), INTERVAL 8 HOUR);
SELECT
projects.token,
projects.created_at as 'UTC created_at',
DATE_SUB(projects.created_at, INTERVAL 8 HOUR) as 'Pacific created_at'
FROM
projects
WHERE
projects.created_at BETWEEN @date_start AND @date_end;
Lưu ý: tôi đặt các biến trong đoạn vì vậy nó dễ dàng hơn để xem xét. Khi tôi viết truy vấn cuối cùng, tôi thường không sử dụng các biến.
Bản sao có thể có của [MySQL chọn ngày hôm qua] (http://stackoverflow.com/questions/7146828/mysql-selecting-yesterdays-date) – derobert