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

การอัปเดตเฉพาะวันที่ (ไม่รวมเวลา) ใน MySQL ด้วย INTERVAL

เมื่อต้องการเปลี่ยนแปลงเฉพาะส่วนของวันที่ในคอลัมน์ DATETIME โดยคงค่าเวลาไว้เหมือนเดิม สามารถใช้ INTERVAL ร่วมกับ UPDATE ได้

สร้างตารางตัวอย่าง

mysql> create table DemoTable ( 
    DueDate datetime ); 
Query OK, 0 rows affected (0.56 sec)

เพิ่มข้อมูลตัวอย่าง

mysql> insert into DemoTable values('2017-08-12 10:30:45'); Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2015-09-21 12:00:00'); Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('2018-12-31 11:45:56'); Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2016-01-02 01:23:04'); Query OK, 1 row affected (0.14 sec)

แสดงข้อมูลก่อนอัปเดต

mysql> select *from DemoTable;
+-----------------------+
| DueDate               |
+-----------------------+
| 2017-08-12 10:30:45   |
| 2015-09-21 12:00:00   |
| 2018-12-31 11:45:56   |
| 2016-01-02 01:23:04   |
+-----------------------+
4 rows in set (0.00 sec)

คิวรี่อัปเดตเพิ่ม 1 ปี (คงเวลาไว้)

mysql> update DemoTable 
    set DueDate=DueDate+interval 1 year; 
Query OK, 4 rows affected (0.16 sec)
Rows matched: 4  Changed: 4  Warnings: 0

ตรวจสอบผลลัพธ์หลังอัปเดต

mysql> select *from DemoTable;
+-----------------------+
| DueDate               |
+-----------------------+
| 2018-08-12 10:30:45   |
| 2016-09-21 12:00:00   |
| 2019-12-31 11:45:56   |
| 2017-01-02 01:23:04   |
+-----------------------+
4 rows in set (0.00 sec)

รูปแบบ INTERVAL ที่ใช้ได้

  • INTERVAL 1 YEAR - เพิ่ม/ลด ปี
  • INTERVAL 1 MONTH - เพิ่ม/ลด เดือน
  • INTERVAL 1 DAY - เพิ่ม/ลด วัน
  • INTERVAL 1 HOUR, MINUTE, SECOND - สำหรับเวลา
  • ใช้เครื่องหมายลบ (-) เพื่อลดค่า เช่น DueDate - INTERVAL 6 MONTH

หมายเหตุ

การใช้ DATE_ADD() หรือ DATE_SUB() ทำได้เช่นกัน เช่น DATE_ADD(DueDate, INTERVAL 1 YEAR)