Datesub mysql và bài toán tính ngày

Đăng bởi Lưu Đại vào ngày 18-12-2022

Datesub trong sql 

Datesub là một hàm để trừ thời gian trong mysql có thể trừ theo ngày giờ phút

Bài toán tính ngày giờ 

Các dự án mình làm thường sẽ có khi khách yêu cầu ngày bắt đầu từ 8 giờ chứ không phải là 0h00 và kết thúc ngày vào lúc 7h59 ngày hôm sau. 
Hồi trước mình hay xử lý phần này trong code tuy vậy logic rất lằng nhằng dễ sai. Từ khi biết tới Datesub đời đã tươi sáng hơn. Ví dụ như trong tình huống trên thì có thể lấy trường thời gian trừ đi 8h, các case sẽ như sau: 
- 7h59 ngày 2/1/2022 ⇒ 11h59 ngày 1/1/2022
- 0h00 ngày 2/1/2022 ⇒ 16h00 ngày 1/1/2022 
Như vậy khi query lấy danh sách công việc theo ngày mình không phải xử lý lằng nhằng trong code nữa mà có thể xử lý luôn tại tầng DB.

Ví dụ

SELECT * FROM ps 
WHERE DATE(DATE_SUB(ps.schedule_time, interval 8 hour));