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

วิธีอัปเดตวันที่ในฟิลด์ Datetime ด้วย MySQL

อัปเดตวันที่ในฟิลด์ datetime โดยใช้ตัวดำเนินการเลขคณิตลบ (-) ร่วมกับ INTERVAL

ไวยากรณ์

UPDATE yourTableName
SET yourDateTimeColumnName = yourDateTimeColumnName - INTERVAL yourValue DAY
WHERE DATE(yourDateTimeColumnName) = 'yourDateValue';

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

mysql> create table updateDateDemo (
    -> Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> ArrivalDate datetime
    -> );
Query OK, 0 rows affected (0.66 sec)

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

mysql> insert into updateDateDemo(ArrivalDate) values('2011-01-13');
mysql> insert into updateDateDemo(ArrivalDate) values('2013-04-21');
mysql> insert into updateDateDemo(ArrivalDate) values('2016-12-22');
mysql> insert into updateDateDemo(ArrivalDate) values('2017-02-25');
mysql> insert into updateDateDemo(ArrivalDate) values('2018-08-19');
mysql> insert into updateDateDemo(ArrivalDate) values('2019-02-27');

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

mysql> select * from updateDateDemo;

ผลลัพธ์:

+----+---------------------+
| Id | ArrivalDate         |
+----+---------------------+
| 1  | 2011-01-13 00:00:00 |
| 2  | 2013-04-21 00:00:00 |
| 3  | 2016-12-22 00:00:00 |
| 4  | 2017-02-25 00:00:00 |
| 5  | 2018-08-19 00:00:00 |
| 6  | 2019-02-27 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)

อัปเดตวันที่ (ลด 7 วัน)

mysql> update updateDateDemo
    -> set ArrivalDate = ArrivalDate - INTERVAL 7 DAY
    -> where DATE(ArrivalDate) = '2019-02-27';
Query OK, 1 row affected (0.13 sec)

ตรวจสอบหลังอัปเดต

mysql> select * from updateDateDemo;

ผลลัพธ์ (แถวที่ 6 เปลี่ยนจาก 2019-02-27 เป็น 2019-02-20):

+----+---------------------+
| Id | ArrivalDate         |
+----+---------------------+
| 1  | 2011-01-13 00:00:00 |
| 2  | 2013-04-21 00:00:00 |
| 3  | 2016-12-22 00:00:00 |
| 4  | 2017-02-25 00:00:00 |
| 5  | 2018-08-19 00:00:00 |
| 6  | 2019-02-20 00:00:00 |
+----+---------------------+
6 rows in set (0.00 sec)

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

  • INTERVAL n DAY / DAYS
  • INTERVAL n HOUR / HOURS
  • INTERVAL n MINUTE / MINUTES
  • INTERVAL n SECOND / SECONDS
  • INTERVAL n MONTH / MONTHS
  • INTERVAL n YEAR / YEARS

ฟังก์ชัน DATE()

ใช้ DATE(datetime_column) เพื่อดึงเฉพาะส่วนวันที่ (เวลาจะถูกตัดทิ้ง) เพื่อเปรียบเทียบได้แม่นยำ