Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Chèn ngày hiện tại cộng giờ cụ thể trong MySQL?

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ápCú phápLưu ý
CONCATCONCAT(CURDATE(), ' 10:20:05')Chuỗi → tự cast DATETIME
TIMESTAMPTIMESTAMP(CURDATE(), '10:20:05')Tạo DATETIME từ DATE + TIME
CASTCAST(CONCAT(CURDATE(), ' 10:20:05') AS DATETIME)Tường minh
ADDTIMEADDTIME(CURDATE(), '10:20:05')Cộng TIME vào DATE
INSERT...SETINSERT 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));