Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

รวม DATE และ TIME เป็น DATETIME ใน MySQL ด้วย CONCAT


คำสั่งหลัก

ใช้ 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