MariaDB
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> MariaDB

Cách hoạt động của SUBDATE () trong MariaDB

Trong MariaDB, SUBDATE() là một hàm ngày và giờ được tích hợp sẵn để trừ một số tiền cho một ngày nhất định.

Nó cho phép bạn thay đổi ngày bằng cách chỉ định ngày, đơn vị cần trừ và số tiền cần trừ. Bạn có thể chuyển một số tiền âm để thêm cho đến ngày, thay vì trừ vào ngày đó.

SUBDATE() cũng có cú pháp phím tắt cho phép bạn chỉ định số ngày cần trừ đi.

Cú pháp

SUBDATE() hàm có hai cú pháp.

Cú pháp 1:

 SUBDATE(expr,days) 

Ở đâu expr là ngày và days là số ngày để trừ đi.

Cú pháp 2:

 SUBDATE(date,INTERVAL expr unit) 

Nơi days là ngày thay đổi, expr là số tiền cần trừ và unit là đơn vị ngày / giờ để trừ (ví dụ:giây, phút, v.v.).

Khi sử dụng cú pháp này, SUBDATE() là từ đồng nghĩa với DATE_SUB() .

Ví dụ - Cú pháp 1

Dưới đây là một ví dụ về việc sử dụng cú pháp đầu tiên:

 SELECT SUBDATE('2021-05-01', 1); 

Kết quả:

 + -------------------------- + | SUBDATE ('2021-05-01', 1) | + -------------------------- + | 2021-04-30 | + -------------------------- + 

Chúng tôi cũng có thể bao gồm phần thời gian nếu được yêu cầu:

 SELECT SUBDATE('2021-05-01 10:00:00', 1); 

Kết quả:

 + ----------------------------------- + | SUBDATE ('2021-05-01 10:00:00', 1) | + ------------------------------- ---- + | 2021-04-30 10:00:00 | + ----------------------------------- +  

Dưới đây là hai cách thay thế để làm điều tương tự:

 SELECT 
    DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
    '2021-05-01 10:00:00' - INTERVAL 1 DAY AS "Result 2"; 

Kết quả:

 + --------------------- + --------------------- + | Kết quả 1 | Kết quả 2 | + --------------------- + --------------------- + | 2021-04-30 10:00:00 | 2021-04-30 10:00:00 | + --------------------- + ---------------- ----- + 

Ví dụ - Cú pháp 2

Dưới đây là một ví dụ về việc sử dụng cú pháp thứ hai:

 SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR); 

Kết quả:

 + ---------------------------------------------- --- + | SUBDATE ('2021-05-31 10:00:00', PHỎNG VẤN 1 GIỜ) | + ----------------------------- -------------------- + | 2021-05-31 09:00:00 | + -------------------------------------- ----------- + 

Cú pháp này cho phép chúng tôi trừ các đơn vị khác cho ngày (tức là không chỉ ngày). Ở đây, tôi đã trừ một giờ cho ngày, nhưng tôi có thể dễ dàng trừ phút, giây, tháng, ngày, năm, v.v. Ví dụ sau.

Dưới đây là hai phương pháp thay thế để đạt được kết quả tương tự như ví dụ trên:

 SELECT 
    DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
    '2021-05-31 10:00:00' - INTERVAL 1 HOUR AS "Result 2"; 

Kết quả:

 + --------------------- + --------------------- + | Kết quả 1 | Kết quả 2 | + --------------------- + --------------------- + | 2021-05-31 09:00:00 | 2021-05-31 09:00:00 | + --------------------- + ---------------- ----- + 

Khoảng thời gian phủ định

Cung cấp khoảng âm thêm số tiền đó cho đến ngày.

Ví dụ:

 SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR); 

Kết quả:

 + ---------------------------------------------- ---- + | SUBDATE ('2021-05-31 10:00:00', INTERVAL -1 GIỜ) | + ---------------------------- ---------------------- + | 2021-05-31 11:00:00 | + -------------------------------------- ------------ + 

Các đơn vị khác

Dưới đây là một ví dụ trừ khoảng 1 cho các đơn vị ngày và giờ khác nhau:

 SELECT 
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
    SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND; 

Kết quả (sử dụng đầu ra dọc):

 NĂM:2020-05-01 10:00:00 THÁNG:2021-04-01 10:00:00 NGÀY:2021-04-30 10:00:00 GIỜ:2021-05-01 09:00:00 PHÚT:2021-05-01 09:59:00 THỨ HAI:2021-05-01 09:59:59 PHÚT GIÂY:2021-05-01 09:59:59.999999 

Đơn vị tổng hợp

Dưới đây là một ví dụ sử dụng các đơn vị tổng hợp:

 SELECT 
    SUBDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
    SUBDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
    SUBDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE"; 

Kết quả:

 + --------------------- + --------------------- + - ------------------- + | NĂM_MONTH | HOUR_SECOND | DAY_MINUTE | + --------------------- + --------------------- + --- ------------------ + | 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 | + --------------------- + ---------------- ----- + --------------------- + 

Ngày trống

Chuyển null cho ngày trả về null :

 SELECT SUBDATE(null, INTERVAL 1 YEAR); 

Kết quả:

 + -------------------------------- + | SUBDATE (null, INTERVAL 1 NĂM) | + -------------------------------- + | NULL | + -------------------------------- + 

Thiếu đối số

Gọi SUBDATE() với số lượng đối số sai hoặc không chuyển bất kỳ đối số nào dẫn đến lỗi:

 SELECT SUBDATE(); 

Kết quả:

 ERROR 1064 (42000):Bạn có lỗi trong cú pháp SQL của mình; kiểm tra hướng dẫn sử dụng tương ứng với phiên bản máy chủ MariaDB của bạn để biết cú pháp phù hợp để sử dụng gần ')' tại dòng 1 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng một số dưới dạng tiền tệ trong MariaDB

  2. Nhân bản MySQL với ProxySQL trên Máy chủ WHM / cPanel:Phần một

  3. MariaDB ROUND () so với TRUNCATE ()

  4. Galera Cluster Recovery 101 - Đi sâu vào phân vùng mạng

  5. Cách dễ dàng để triển khai một cụm MySQL Galera trên AWS