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

รวมคอลัมน์ Date และ Time เป็น Timestamp ใน MySQL

การรวม 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