Trong MySQL, bạn có thể sử dụng SUBDATE()
hàm để trừ một khoảng thời gian cụ thể cho một ngày. Ví dụ:bạn có thể sử dụng nó để trừ 10 ngày cho một ngày nhất định. Bạn có thể chỉ định có trừ ngày, tuần, tháng, quý, năm, v.v. Bạn cũng có thể trừ một giá trị thời gian, chẳng hạn như giây, micro giây, v.v.
Khi sử dụng cú pháp đầu tiên được liệt kê bên dưới, SUBDATE()
hàm là từ đồng nghĩa với DATE_SUB()
hàm (tương tự như cách ADDDATE()
là từ đồng nghĩa với DATE_ADD()
khi sử dụng cùng một cú pháp).
Cú pháp
Bạn có thể sử dụng chức năng này theo hai cách sau:
SUBDATE(date,INTERVAL expr unit)
Hoặc
SUBDATE(expr,days)
Ví dụ 1 - Cú pháp đầu tiên
Dưới đây là một ví dụ về việc sử dụng dạng đầu tiên của cú pháp.
SELECT SUBDATE('2018-05-10', INTERVAL 2 DAY) AS Result;
Kết quả:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Ví dụ này trừ đi 2 ngày kể từ ngày được cung cấp bởi đối số đầu tiên.
Ví dụ 2 - Cú pháp thứ hai
Ví dụ này có thể được viết lại như sau:
SELECT SUBDATE('2018-05-10', 2) AS Result;
Kết quả:
+------------+ | Result | +------------+ | 2018-05-08 | +------------+
Điều này sử dụng hình thức thứ hai của cú pháp. Đối số thứ hai là một số nguyên đại diện cho số ngày sẽ được trừ đi từ ngày được cung cấp bởi đối số đầu tiên.
Như đã đề cập, SUBDATE()
là từ đồng nghĩa với DATE_SUB()
, nhưng chỉ khi cú pháp đầu tiên được sử dụng. Cú pháp thứ hai chỉ có sẵn trong SUBDATE()
.
Ví dụ 3 - Đơn vị ngày khác
Một lợi ích của dạng đầu tiên của cú pháp là bạn có thể chỉ định xem có trừ ngày, tuần, tháng, năm, v.v. Dưới đây là một số ví dụ.
SELECT '2018-05-10' AS 'Start Date', SUBDATE('2018-05-10', INTERVAL 2 WEEK) AS '-2 Weeks', SUBDATE('2018-05-10', INTERVAL 2 MONTH) AS '-2 Months', SUBDATE('2018-05-10', INTERVAL 2 QUARTER) AS '-2 Quarters', SUBDATE('2018-05-10', INTERVAL 2 YEAR) AS '-2 Years';
Kết quả:
+------------+------------+------------+-------------+------------+ | Start Date | -2 Weeks | -2 Months | -2 Quarters | -2 Years | +------------+------------+------------+-------------+------------+ | 2018-05-10 | 2018-04-26 | 2018-03-10 | 2017-11-10 | 2016-05-10 | +------------+------------+------------+-------------+------------+
Ví dụ 4 - Đơn vị thời gian
Bạn cũng có thể sử dụng SUBDATE()
để trừ các đơn vị thời gian khỏi một giá trị ngày / giờ. Đây là một ví dụ.
SELECT SUBDATE('2018-05-10 01:00:00', INTERVAL 2 HOUR) AS Result;
Kết quả:
+---------------------+ | Result | +---------------------+ | 2018-05-09 23:00:00 | +---------------------+
Giá trị mong đợi
Bảng sau đây hiển thị các giá trị đơn vị hợp lệ và định dạng mong đợi của chúng.
unit Giá trị | Dự kiến expr Định dạng |
---|---|
MICROSECOND | MICROSECONDS |
THỨ HAI | GIÂY |
PHÚT | PHÚT |
GIỜ | GIỜ |
NGÀY | NGÀY |
TUẦN | TUẦN |
THÁNG | THÁNG |
QUÝ | QUARTERS |
NĂM | NĂM |
SECOND_MICROSECOND | ‘SECONDS.MICROSECONDS’ |
MINUTE_MICROSECOND | ‘PHÚT:SECONDS.MICROSECONDS’ |
MINUTE_SECOND | ‘MINUTES:SECONDS’ |
HOUR_MICROSECOND | ‘GIỜ:PHÚT:SECONDS.MICROSECONDS’ |
HOUR_SECOND | ‘GIỜ:PHÚT:GIÂY’ |
HOUR_MINUTE | ‘GIỜ:PHÚT’ |
DAY_MICROSECOND | ‘NGÀY GIỜ:PHÚT:SECONDS.MICROSECONDS’ |
DAY_SECOND | ‘NGÀY GIỜ:PHÚT:GIÂY’ |
DAY_MINUTE | ‘NGÀY GIỜ:PHÚT’ |
DAY_HOUR | ‘DAYS GIURS’ |
YEAR_MONTH | ‘NĂM-THÁNG’ |