Tính thời điểm cuối ngày (23:59:59) từ datetime trong MySQL
Công thức: DATE(ngay) + INTERVAL 1 DAY - INTERVAL 1 SECOND. Lấy phần ngày, cộng 1 ngày về 00:00:00 ngày mai, trừ 1 giây.
Tạo bảng và dữ liệu
mysql> create table DemoTable (
JoiningDatetime datetime,
DueDatetime datetime
);
Query OK, 0 rows affected (0.55 sec)
mysql> insert into DemoTable(JoiningDatetime) values('2019-11-03 12:34:54');
mysql> insert into DemoTable(JoiningDatetime) values('2019-10-04 12:34:54');
Cập nhật DueDatetime = cuối ngày của JoiningDatetime
mysql> update DemoTable
-> set DueDatetime = DATE(JoiningDatetime) + INTERVAL 1 DAY - INTERVAL 1 SECOND;
Query OK, 2 rows affected (0.19 sec)
Rows matched: 2 Changed: 2 Warnings: 0
Kết quả
+---------------------+---------------------+ | JoiningDatetime | DueDatetime | +---------------------+---------------------+ | 2019-11-03 12:34:54 | 2019-11-03 23:59:59 | | 2019-10-04 12:34:54 | 2019-10-04 23:59:59 | +---------------------+---------------------+
Cách thay thế (MySQL 5.6.4+):
DATE_ADD(DATE(JoiningDatetime), INTERVAL 1 DAY) - INTERVAL 1 SECONDTIMESTAMP(DATE(JoiningDatetime)) + INTERVAL 1 DAY - INTERVAL 1 SECOND- Dùng
LAST_DAY()cho cuối tháng:LAST_DAY(JoiningDatetime) + INTERVAL 1 DAY - INTERVAL 1 SECOND
Ứng dụng: Thiết lập deadline cuối ngày, báo cáo ngày, window hàm thời gian.