MariaDB bao gồm một loạt các đơn vị ngày và giờ mà bạn có thể sử dụng khi làm việc với các giá trị ngày và giờ. Ví dụ:MONTH
là một đơn vị và HOUR
là một đơn vị khác.
Một số đơn vị là đơn vị kết hợp. Đơn vị tổng hợp là khi hai đơn vị kết hợp thành một. Quy ước đặt tên là mỗi tên đơn vị được phân tách bằng dấu gạch dưới. Ví dụ:MINUTE_SECOND
là phút và giây.
Dưới đây là một số ví dụ chứng minh cách các đơn vị kết hợp hoạt động trong MariaDB.
Danh sách các đơn vị tổng hợp
Đầu tiên, đây là danh sách các đơn vị tổng hợp có sẵn trong MariaDB:
Unit | Mô tả |
---|---|
SECOND_MICROSECOND | Giây.Microseconds |
MINUTE_MICROSECOND | Minutes.Seconds.Microseconds |
MINUTE_SECOND | Phút. Giây |
HOUR_MICROSECOND | Hours.Minutes.Seconds.Microseconds |
HOUR_SECOND | Hours.Minutes.Seconds |
HOUR_MINUTE | Hours.Minutes |
DAY_MICROSECOND | Days Hours.Minutes.Seconds.Microseconds |
DAY_SECOND | Ngày Giờ. Phút. Giây |
DAY_MINUTE | Ngày Giờ. Phút |
DAY_HOUR | Giờ ngày |
YEAR_MONTH | Năm-Tháng |
Chỉ cần nhìn vào tên của họ cũng cung cấp manh mối khá tốt về những gì họ làm.
Đơn vị tổng hợp (như với bất kỳ đơn vị ngày / giờ nào) có thể được sử dụng khi trích xuất các phần của giá trị ngày / giờ và cả khi thực hiện những việc như cộng và trừ khoảng thời gian cho giá trị ngày / giờ.
Chúng có thể được sử dụng với +
và -
toán tử khi thực hiện số học vào ngày tháng, với các hàm như ADDDATE()
, SUBDATE()
, DATE_ADD()
, DATE_SUB()
, EXTRACT()
, TIMESTAMPADD()
và TIMESTAMPDIFF()
.
Chúng cũng có thể được sử dụng trong ON SCHEDULE
mệnh đề của CREATE_EVENT()
và ALTER_EVENT()
các chức năng.
Ví dụ - Trích xuất các đơn vị kết hợp
Đơn vị ngày và giờ có thể được sử dụng với nhiều chức năng khác nhau và trong nhiều ngữ cảnh khác nhau. Một trong những hàm chấp nhận các đơn vị này là EXTRACT()
hàm số. Hàm này trả về một đơn vị ngày / giờ cụ thể từ một giá trị ngày tháng hoặc thời gian cụ thể.
Dưới đây là một ví dụ về việc sử dụng một đơn vị tổng hợp để trích xuất năm và tháng từ một ngày:
SELECT EXTRACT(YEAR_MONTH FROM '2030-12-25');
Kết quả:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-12-25') | +---------------------------------------+ | 203012 | +---------------------------------------+
Chúng ta có thể thấy rằng năm và tháng được trả về là một giá trị.
Ví dụ - Thêm / Trừ các Đơn vị Tổng hợp
Các đơn vị tổng hợp cũng có thể được sử dụng để cộng và trừ các khoảng ngày và giờ.
Ví dụ:
SELECT '2030-12-25' + INTERVAL '2:08' DAY_HOUR;
Kết quả:
+-----------------------------------------+ | '2030-12-25' + INTERVAL '2:08' DAY_HOUR | +-----------------------------------------+ | 2030-12-27 08:00:00 | +-----------------------------------------+
Trong trường hợp này, có hai phần cần lưu ý liên quan đến đơn vị tổng hợp.
Như trong ví dụ trước, chúng tôi đã sử dụng một đơn vị kết hợp (trong trường hợp này là DAY_HOUR
). Liên quan đến khoảng thời gian thực tế cần thêm, chúng tôi đã sử dụng dấu hai chấm để phân tách mỗi bên của đơn vị tổng hợp.
Trong trường hợp này, chúng tôi đã chỉ định '2:08'
, đã thêm 2 ngày và 8 giờ vào giá trị ngày. Ngày ban đầu không có phần thời gian và do đó, người ta giả định rằng thời gian ban đầu là 00:00:00
.
MariaDB có thể tha thứ một cách hợp lý với tính nghiêm ngặt của định dạng. Chúng ta có thể có được hiệu ứng tương tự bằng cách sử dụng các dấu phân tách khác nhau và cũng bằng cách bỏ qua số 0 ở đầu.
Đây là một ví dụ khác sử dụng DATE_ADD()
hoạt động với các khoảng thời gian khác nhau:
SELECT DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR);
Kết quả:
+-------------------------------------------------+ | DATE_ADD('2030-12-25', INTERVAL '2!8' DAY_HOUR) | +-------------------------------------------------+ | 2030-12-27 08:00:00 | +-------------------------------------------------+
Dưới đây là một số ví dụ khác về các đơn vị tổng hợp khác nhau:
SELECT
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
DATE_ADD('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
Kết quả:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2022-07-01 10:00:00 | 2021-05-01 11:25:35 | 2021-05-01 11:30:00 | +---------------------+---------------------+---------------------+