ใช้ UPDATE ลบวินาทีด้วยการลบ SECOND() ออกจากคอลัมน์
ลบส่วนวินาทีออกจาก DATETIME/TIMESTAMP ได้โดย datetime_col - INTERVAL SECOND(datetime_col) SECOND หรือ datetime_col - SECOND(datetime_col) (MySQL รองรับการลบ Integer ออกจาก DATETIME เป็นวินาที)
ตัวอย่างสร้างตารางและข้อมูล
CREATE TABLE DemoTable (Shippingdatetime DATETIME);
INSERT INTO DemoTable VALUES
('2019-01-21 12:05:20'), ('2019-03-01 10:23:35'), ('2019-06-09 11:00:56');
ข้อมูลก่อนลบวินาที
+---------------------+ | Shippingdatetime | +---------------------+ | 2019-01-21 12:05:20 | | 2019-03-01 10:23:35 | | 2019-06-09 11:00:56 | +---------------------+
คำสั่ง UPDATE ลบวินาที
UPDATE DemoTable SET Shippingdatetime = Shippingdatetime - SECOND(Shippingdatetime);
ข้อมูลหลังลบวินาที (วินาทีเป็น 00)
+---------------------+ | Shippingdatetime | +---------------------+ | 2019-01-21 12:05:00 | | 2019-03-01 10:23:00 | | 2019-06-09 11:00:00 | +---------------------+
คำอธิบาย:
SECOND(Shippingdatetime)คืนค่าวินาที (0-59)Shippingdatetime - SECOND(...)ลบวินาทีออก (MySQL แปลง Integer เป็น INTERVAL SECOND อัตโนมัติ)- ผลลัพธ์: นาทีคงเดิม วินาทีเป็น 00
วิธีอื่น (ชัดเจนกว่า):
UPDATE DemoTable SET Shippingdatetime = DATE_SUB(Shippingdatetime, INTERVAL SECOND(Shippingdatetime) SECOND);UPDATE DemoTable SET Shippingdatetime = TIMESTAMP(DATE(Shippingdatetime), TIME(Shippingdatetime) - INTERVAL SECOND(Shippingdatetime) SECOND);UPDATE DemoTable SET Shippingdatetime = CONCAT(DATE(Shippingdatetime), ' ', HOUR(Shippingdatetime), ':', MINUTE(Shippingdatetime), ':00');(String manipulation)
⚐ ประสิทธิภาพ: UPDATE ทุกแถว (Full Table Scan) หากตารางใหญ่ ควรเพิ่ม WHERE กรองเฉพาะแถวที่วินาที != 0 หรือทำเป็น Batch