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

MySQL: เพิ่ม 1 ปีและ 2 วัน ให้กับวันที่ในคำสั่งเดียวด้วย INTERVAL

การบวกช่วงเวลา (INTERVAL) หลายหน่วยในคำสั่งเดียว

MySQL รองรับการบวก/ลบ INTERVAL หลายหน่วยในคำสั่งเดียวได้ โดยใช้ DATE_ADD ซ้อนกัน หรือ INTERVAL ... + INTERVAL ... (MySQL 8.0+)

สร้างตารางและข้อมูล

mysql> create table DemoTable1376 (
    -> AdmissionDate date
    -> );
Query OK, 0 rows affected (0.68 sec)

mysql> insert into DemoTable1376 values('2018-01-21');
mysql> insert into DemoTable1376 values('2017-12-01');
mysql> insert into DemoTable1376 values('2018-11-02');
mysql> insert into DemoTable1376 values('2019-03-14');

ข้อมูลต้นฉบับ

+---------------+
| AdmissionDate |
+---------------+
| 2018-01-21    |
| 2017-12-01    |
| 2018-11-02    |
| 2019-03-14    |
+---------------+

คำสั่ง DATE_ADD ซ้อนกัน (รองรับทุกเวอร์ชัน)

mysql> select date_add(date_add(AdmissionDate, interval 1 year), interval 2 day) 
    -> as AfterAddingOneYearTwoDays from DemoTable1376;

ผลลัพธ์

+---------------------------+
| AfterAddingOneYearTwoDays |
+---------------------------+
| 2019-01-23                |
| 2018-12-03                |
| 2019-11-04                |
| 2020-03-16                |
+---------------------------+

วิธีที่สั้นกว่าใน MySQL 8.0+

SELECT AdmissionDate + INTERVAL 1 YEAR + INTERVAL 2 DAY 
FROM DemoTable1376;

หรือใช้ DATE_ADD กับ expression:

DATE_ADD(AdmissionDate, INTERVAL 1 YEAR + INTERVAL 2 DAY)

หน่วย INTERVAL ที่รองรับ

หน่วยตัวอย่าง
MICROSECONDINTERVAL 500 MICROSECOND
SECONDINTERVAL 30 SECOND
MINUTEINTERVAL 15 MINUTE
HOURINTERVAL 2 HOUR
DAYINTERVAL 2 DAY
WEEKINTERVAL 1 WEEK
MONTHINTERVAL 3 MONTH
QUARTERINTERVAL 1 QUARTER
YEARINTERVAL 1 YEAR

การลบช่วงเวลา

DATE_SUB(date, INTERVAL 1 YEAR)
-- หรือ
date - INTERVAL 1 YEAR

ข้อควรระวัง: การบวก MONTH/YEAR อาจให้ผลลัพธ์ที่ไม่คาดคิดในวันที่สิ้นเดือน (เช่น 2023-01-31 + 1 MONTH = 2023-02-28) MySQL จะปรับให้อยู่ในช่วงวันที่ที่ถูกต้องของเดือนปลายทาง