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

วิธาสร้าง DATETIME จาก DATE และ TIME แยกกันใน MySQL

การใช้ 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;
DueDateDueTime
2018-12-1109:59:07

4. รวมเป็น DATETIME

SELECT ADDTIME(CONVERT(DueDate, DATETIME), DueTime) AS DateTimeDemo 
FROM DateTime;

ผลลัพธ์

DateTimeDemo
2018-12-11 09:59:07

วิธีอื่นๆ ที่ใช้ได้

วิธีคำสั่งหมายเหตุ
CONCAT + CASTCAST(CONCAT(date_col, ' ', time_col) AS DATETIME)เข้าใจง่าย, มาตรฐาน SQL
TIMESTAMPTIMESTAMP(date_col, time_col)สั้นที่สุด แต่เป็น TIMESTAMP ไม่ใช่ DATETIME
DATE_ADDDATE_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)