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

วิธีลบวินาทีออกจาก DATETIME ใน MySQL

ใช้ 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