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

ลบวันออกจากวันที่ใน MySQL ด้วย DATE_SUB()


ฟังก์ชัน DATE_SUB()

ใช้ลบช่วงเวลา (Interval) ออกจากวันที่/เวลา รองรับหน่วยต่างๆ: DAY, MONTH, YEAR, HOUR, MINUTE, SECOND เป็นต้น

รูปแบบคำสั่ง

DATE_SUB(date, INTERVAL expr unit)

ตัวอย่างการใช้งาน

1. สร้างตาราง

mysql> CREATE TABLE DemoTable (
    -> AdmissionDate TIMESTAMP
    -> );
Query OK, 0 rows affected (1.05 sec)

2. เพิ่มข้อมูลวันที่

mysql> INSERT INTO DemoTable VALUES('2019-01-01');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO DemoTable VALUES('2018-12-31');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable VALUES('2017-03-13');
Query OK, 1 row affected (0.19 sec)
mysql> INSERT INTO DemoTable VALUES('2019-01-02');
Query OK, 1 row affected (0.08 sec)

3. แสดงข้อมูลต้นฉบับ

mysql> SELECT * FROM DemoTable;

ผลลัพธ์:

+---------------------+
| AdmissionDate       |
+---------------------+
| 2019-01-01 00:00:00 |
| 2018-12-31 00:00:00 |
| 2017-03-13 00:00:00 |
| 2019-01-02 00:00:00 |
+---------------------+
4 rows in set (0.00 sec)

4. ลบ 1 วันจากทุกแถว

mysql> SELECT DATE_SUB(AdmissionDate, INTERVAL 1 DAY) FROM DemoTable;

ผลลัพธ์:

+----------------------------------------+
| date_sub(AdmissionDate,interval 1 day) |
+----------------------------------------+
| 2018-12-31 00:00:00                    |
| 2018-12-30 00:00:00                    |
| 2017-03-12 00:00:00                    |
| 2019-01-01 00:00:00                    |
+----------------------------------------+
4 rows in set (0.00 sec)

หน่วยเวลาที่รองรับ (Unit)

หน่วย คำอธิบาย ตัวอย่าง
MICROSECOND ไมโครวินาที INTERVAL 500 MICROSECOND
SECOND วินาที INTERVAL 30 SECOND
MINUTE นาที INTERVAL 15 MINUTE
HOUR ชั่วโมง INTERVAL 2 HOUR
DAY วัน INTERVAL 1 DAY
WEEK สัปดาห์ INTERVAL 1 WEEK
MONTH เดือน INTERVAL 3 MONTH
QUARTER ไตรมาส INTERVAL 1 QUARTER
YEAR ปี INTERVAL 1 YEAR

ฟังก์ชันเกี่ยวข้อง

  • DATE_ADD() - บวกช่วงเวลา (ตรงข้ามกับ DATE_SUB)
  • ADDDATE() / SUBDATE() - Synonym ของ DATE_ADD/DATE_SUB
  • INTERVAL keyword ใช้ได้ใน WHERE clause เช่น WHERE date > NOW() - INTERVAL 7 DAY

กรณีการใช้งานจริง

  • คำนวณวันครบกำหนดชำระ (Due date - 7 days = Reminder date)
  • หาช่วงเวลา 30 วันที่ผ่านมา สำหรับรายงาน
  • คำนวณอายุ/ระยะเวลาจากวันเกิด/วันเริ่มงาน
  • Schedule job - ตรวจสอบข้อมูลที่หมดอายุ