การใช้ ADDTIME() และ CONVERT()
ใน MySQL คุณสามารถรวมคอลัมน์ DATE และ TIME ให้เป็น DATETIME ได้ด้วยฟังก์ชัน ADDTIME() ร่วมกับ CONVERT()
รูปแบบคำสั่ง
SELECT ADDTIME(CONVERT(date_column, DATETIME), time_column) AS combined_datetime
FROM your_table_name;
ตัวอย่างการใช้งานจริง
1. สร้างตารางแยก Date และ Time
CREATE TABLE DateTime (
DueDate DATE,
DueTime TIME
);
2. เพิ่มข้อมูล (วันนี้ + เวลาตอนนี้)
INSERT INTO DateTime VALUES (CURDATE(), NOW());
3. ตรวจสอบข้อมูลแยกกัน
SELECT * FROM DateTime;
| DueDate | DueTime |
| 2018-12-11 | 09:59:07 |
4. รวมเป็น DATETIME
SELECT ADDTIME(CONVERT(DueDate, DATETIME), DueTime) AS DateTimeDemo
FROM DateTime;
ผลลัพธ์
| DateTimeDemo |
| 2018-12-11 09:59:07 |
วิธีอื่นๆ ที่ใช้ได้
| วิธี | คำสั่ง | หมายเหตุ |
| CONCAT + CAST | CAST(CONCAT(date_col, ' ', time_col) AS DATETIME) | เข้าใจง่าย, มาตรฐาน SQL |
| TIMESTAMP | TIMESTAMP(date_col, time_col) | สั้นที่สุด แต่เป็น TIMESTAMP ไม่ใช่ DATETIME |
| DATE_ADD | DATE_ADD(date_col, INTERVAL TIME_TO_SEC(time_col) SECOND) | ทางคณิตศาสตร์ |
การใช้งานใน INSERT/UPDATE
-- Insert พร้อมรวม
INSERT INTO target_table (datetime_col)
SELECT ADDTIME(CONVERT(due_date, DATETIME), due_time)
FROM source_table;
-- Update คอลัมน์ DATETIME จาก Date/Time แยก
UPDATE target_table t
JOIN source_table s ON t.id = s.id
SET t.datetime_col = ADDTIME(CONVERT(s.due_date, DATETIME), s.due_time);
คำแนะนำ
- 🎯 CONCAT + CAST แนะนำมากที่สุด (อ่านง่าย, Portable, Standard SQL)
- ⚡ ADDTIME + CONVERT เร็วเล็กน้อยใน MySQL
- 🔄 ใช้
TIMESTAMP หากต้องการ Timezone Conversion อัตโนมัติ
- 📅
DATETIME ไม่มี Timezone, TIMESTAMP มี (เก็บเป็น UTC)