คำสั่งหลัก
ใช้ CONCAT(date_col, ' ', time_col) รวมเป็น string แล้ว MySQL แปลงเป็น DATETIME อัตโนมัติ
รูปแบบคำสั่ง
UPDATE yourTable SET datetime_col = CONCAT(date_col, ' ', time_col);
ตัวอย่างครบถ้วน
1. สร้างตารางมี DATE, TIME, DATETIME แยกกัน
mysql> create table getDateTimeFieldsDemo
-> (
-> ShippingDate date,
-> ShippingTime time,
-> Shippingdatetime datetime
-> );
Query OK, 0 rows affected (0.50 sec)
2. เพิ่มข้อมูล (DATETIME ว่างไว้)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2018-01-21','09:45:34');
Query OK, 1 row affected (0.16 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2013-07-26','13:21:20');
Query OK, 1 row affected (0.13 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2017-12-31','15:31:40');
Query OK, 1 row affected (0.17 sec)
mysql> insert into getDateTimeFieldsDemo(ShippingDate,ShippingTime) values('2019-03-07','12:13:34');
Query OK, 1 row affected (0.41 sec)
3. ดูข้อมูลก่อนรวม
mysql> select * from getDateTimeFieldsDemo;
+--------------+--------------+------------------+ | ShippingDate | ShippingTime | Shippingdatetime | +--------------+--------------+------------------+ | 2018-01-21 | 09:45:34 | NULL | | 2013-07-26 | 13:21:20 | NULL | | 2017-12-31 | 15:31:40 | NULL | | 2019-03-07 | 12:13:34 | NULL | +--------------+--------------+------------------+
4. UPDATE รวม DATE + TIME → DATETIME
mysql> update getDateTimeFieldsDemo set Shippingdatetime = concat(ShippingDate, ' ', ShippingTime); Query OK, 4 rows affected (0.09 sec) Rows matched: 4 Changed: 4 Warnings: 0
5. ตรวจสอบผลลัพธ์
mysql> select * from getDateTimeFieldsDemo;
+--------------+--------------+---------------------+ | ShippingDate | ShippingTime | Shippingdatetime | +--------------+--------------+---------------------+ | 2018-01-21 | 09:45:34 | 2018-01-21 09:45:34 | | 2013-07-26 | 13:21:20 | 2013-07-26 13:21:20 | | 2017-12-31 | 15:31:40 | 2017-12-31 15:31:40 | | 2019-03-07 | 12:13:34 | 2019-03-07 12:13:34 | +--------------+--------------+---------------------+
วิธีอื่น: ใช้ CAST หรือ TIMESTAMP()
-- ใช้ CAST UPDATE t SET dt = CAST(CONCAT(d, ' ', t) AS DATETIME); -- ใช้ TIMESTAMP() function UPDATE t SET dt = TIMESTAMP(d, t); -- ใน SELECT (computed column) SELECT DATE, TIME, TIMESTAMP(DATE, TIME) AS datetime FROM t;
MySQL 5.7+: Generated Column (อัตโนมัติ)
CREATE TABLE orders ( order_date DATE, order_time TIME, order_datetime DATETIME AS (TIMESTAMP(order_date, order_time)) STORED );
คอลัมน์ order_datetime จะคำนวณเองอัตโนมัติตอน INSERT/UPDATE
แยก DATETIME กลับเป็น DATE + TIME
SELECT DATE(datetime_col) AS date_part, TIME(datetime_col) AS time_part FROM table;
สรุป: CONCAT(date, ' ', time) วิธีง่ายที่สุดสำหรับรวม DATE+TIME→DATETIME ใน MySQL