Giải pháp: CONCAT(CURDATE(), ' time')
Ghép ngày hiện tại (CURDATE()) với chuỗi giờ cố định bằng CONCAT().
Ví dụ minh họa
Tạo bảng
mysql> CREATE TABLE DemoTable (ArrivalDate DATETIME);
Chèn: Hôm nay + giờ cố định
mysql> INSERT INTO DemoTable VALUES(CONCAT(CURDATE(), ' 10:20:05')); mysql> INSERT INTO DemoTable VALUES(CONCAT(CURDATE(), ' 12:05:00'));
Kết quả (giả sử hôm nay 2019-06-08)
+---------------------+ | ArrivalDate | +---------------------+ | 2019-06-08 10:20:05 | | 2019-06-08 12:05:00 | +---------------------+
Các cách khác
| Phương pháp | Cú pháp | Lưu ý |
|---|---|---|
| CONCAT | CONCAT(CURDATE(), ' 10:20:05') | Chuỗi → tự cast DATETIME |
| TIMESTAMP | TIMESTAMP(CURDATE(), '10:20:05') | Tạo DATETIME từ DATE + TIME |
| CAST | CAST(CONCAT(CURDATE(), ' 10:20:05') AS DATETIME) | Tường minh |
| ADDTIME | ADDTIME(CURDATE(), '10:20:05') | Cộng TIME vào DATE |
| INSERT...SET | INSERT SET ArrivalDate = TIMESTAMP(CURDATE(), '10:20:05') | Cú pháp MySQL |
Ứng dụng: Lịch trình cố định
-- Ca sáng 8:00, ca chiều 14:00, ca tối 20:00 INSERT INTO shifts (shift_date, start_time) SELECT CURDATE(), '08:00:00' UNION ALL SELECT CURDATE(), '14:00:00' UNION ALL SELECT CURDATE(), '20:00:00';
Lưu ý
CURDATE()trả về DATE,NOW()trả về DATETIME- Format giờ:
'HH:MM:SS'(24h), có dấu cách trước giờ trong CONCAT - MySQL tự parse chuỗi 'YYYY-MM-DD HH:MM:SS' thành DATETIME
- Timezone: CURDATE() theo session timezone
Mở rộng: Giờ từ cột/biến
-- Từ cột TIME INSERT INTO DemoTable SELECT CONCAT(CURDATE(), ' ', shift_time) FROM shift_templates; -- Từ biến SET @shift_start = '08:00:00'; INSERT INTO DemoTable VALUES(CONCAT(CURDATE(), ' ', @shift_start));