การรวม DATE และ TIME ให้เป็น DATETIME
ใช้ CONCAT() รวมสตริง แล้ว CAST() แปลงเป็น DATETIME
รูปแบบคำสั่ง
SELECT CAST(CONCAT(yourDateColumnName, ' ', yourTimeColumnName) AS DATETIME) AS anyVariableName FROM yourTableName;
ตัวอย่างสร้างตารางและข้อมูล
mysql> CREATE TABLE DateAndTimeToTimestamp (
-> Duedate DATE,
-> DueTime TIME
-> );
Query OK, 0 rows affected (0.51 sec)
mysql> INSERT INTO DateAndTimeToTimestamp VALUES(DATE_ADD(CURDATE(), INTERVAL 2 DAY), '10:30:02');
mysql> INSERT INTO DateAndTimeToTimestamp VALUES(DATE_ADD(CURDATE(), INTERVAL -2 DAY), '12:20:45');
mysql> INSERT INTO DateAndTimeToTimestamp VALUES(DATE_ADD(CURDATE(), INTERVAL 1 DAY), '01:32:42');
mysql> INSERT INTO DateAndTimeToTimestamp VALUES(DATE_ADD(CURDATE(), INTERVAL -1 DAY), '14:25:58');
ข้อมูลแยกคอลัมน์
mysql> SELECT * FROM DateAndTimeToTimestamp;
+------------+----------+ | Duedate | DueTime | +------------+----------+ | 2018-12-16 | 10:30:02 | | 2018-12-12 | 12:20:45 | | 2018-12-15 | 01:32:42 | | 2018-12-13 | 14:25:58 | +------------+----------+ 4 rows in set (0.00 sec)
คำสั่งรวมเป็น Timestamp
mysql> SELECT CONCAT(Duedate, ' ', DueTime) AS timestampDemo
-> FROM DateAndTimeToTimestamp;
+---------------------+ | timestampDemo | +---------------------+ | 2018-12-16 10:30:02 | | 2018-12-12 12:20:45 | | 2018-12-15 01:32:42 | | 2018-12-13 14:25:58 | +---------------------+ 4 rows in set (0.00 sec)
หมายเหตุ: CONCAT() คืนค่า STRING หากต้องการเป็น DATETIME type จริง ให้ใช้ CAST(... AS DATETIME) หรือ STR_TO_DATE()
วิธีที่เป็นมาตรฐานกว่า (MySQL 5.7+):
SELECT TIMESTAMP(Duedate, DueTime) AS combined_datetime FROM DateAndTimeToTimestamp;
ฟังก์ชัน TIMESTAMP(): รวม DATE และ TIME ให้เป็น DATETIME โดยตรง ไม่ต้อง CAST