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

Cách EXTRACT () hoạt động trong MariaDB

Trong MariaDB, EXTRACT() là một hàm ngày và giờ được tích hợp sẵn trả về đơn vị được chỉ định từ một biểu thức ngày tháng hoặc ngày giờ nhất định.

Cú pháp

Cú pháp như sau:

EXTRACT(unit FROM date)

Đơn vị unit là một đơn vị ngày và giờ hợp lệ và date là ngày trích xuất đơn vị đó.

Ví dụ

Dưới đây là một ví dụ trích xuất năm từ một ngày:

SELECT EXTRACT(YEAR FROM '2030-12-25');

Kết quả:

+---------------------------------+
| EXTRACT(YEAR FROM '2030-12-25') |
+---------------------------------+
|                            2030 |
+---------------------------------+

Đây là một số khác trích xuất trong ngày:

SELECT EXTRACT(DAY FROM '2030-12-25');

Kết quả:

+--------------------------------+
| EXTRACT(DAY FROM '2030-12-25') |
+--------------------------------+
|                             25 |
+--------------------------------+

Giá trị ngày giờ

Nó cũng hoạt động với các giá trị ngày giờ:

SELECT EXTRACT(HOUR FROM '2030-02-01 10:30:45');

Kết quả:

+------------------------------------------+
| EXTRACT(HOUR FROM '2030-02-01 10:30:45') |
+------------------------------------------+
|                                       10 |
+------------------------------------------+

Đơn vị ngày &giờ

Dưới đây là một ví dụ khác chạy qua từng đơn vị trong biểu thức ngày giờ:

SELECT 
    EXTRACT(YEAR FROM '2030-02-01 10:30:45.123456') AS YEAR,
    EXTRACT(MONTH FROM '2030-02-01 10:30:45.123456') AS MONTH,
    EXTRACT(DAY FROM '2030-02-01 10:30:45.123456') AS DAY,
    EXTRACT(HOUR FROM '2030-02-01 10:30:45.123456') AS HOUR,
    EXTRACT(MINUTE FROM '2030-02-01 10:30:45.123456') AS MINUTE,
    EXTRACT(SECOND FROM '2030-02-01 10:30:45.123456') AS SECOND,
    EXTRACT(MICROSECOND FROM '2030-02-01 10:30:45.123456') AS MICROSECOND;

Kết quả:

+------+-------+------+------+--------+--------+-------------+
| YEAR | MONTH | DAY  | HOUR | MINUTE | SECOND | MICROSECOND |
+------+-------+------+------+--------+--------+-------------+
| 2030 |     2 |    1 |   10 |     30 |     45 |      123456 |
+------+-------+------+------+--------+--------+-------------+

Đơn vị tổng hợp

Dưới đây là một ví dụ sử dụng đơn vị tổng hợp. Đơn vị tổng hợp bao gồm nhiều đơn vị thời gian cơ bản.

SELECT EXTRACT(YEAR_MONTH FROM '2030-02-01');

Kết quả:

+---------------------------------------+
| EXTRACT(YEAR_MONTH FROM '2030-02-01') |
+---------------------------------------+
|                                203002 |
+---------------------------------------+

Đơn vị 0

Không có đơn vị nào dẫn đến 0 .

Ví dụ:

SELECT 
    EXTRACT(YEAR FROM '0000-00-00 00:00:00.000000') AS YEAR,
    EXTRACT(MONTH FROM '0000-00-00 00:00:00.000000') AS MONTH,
    EXTRACT(DAY FROM '0000-00-00 00:00:00.000000') AS DAY,
    EXTRACT(HOUR FROM '0000-00-00 00:00:00.000000') AS HOUR,
    EXTRACT(MINUTE FROM '0000-00-00 00:00:00.000000') AS MINUTE,
    EXTRACT(SECOND FROM '0000-00-00 00:00:00.000000') AS SECOND,
    EXTRACT(MICROSECOND FROM '0000-00-00 00:00:00.000000') AS MICROSECOND;

Kết quả:

+------+-------+------+------+--------+--------+-------------+
| YEAR | MONTH | DAY  | HOUR | MINUTE | SECOND | MICROSECOND |
+------+-------+------+------+--------+--------+-------------+
|    0 |     0 |    0 |    0 |      0 |      0 |           0 |
+------+-------+------+------+--------+--------+-------------+

Số ngày

Cũng có thể chuyển ngày tháng dưới dạng số, miễn là ngày tháng có ý nghĩa.

Ví dụ

SELECT EXTRACT(MONTH FROM 20301125);

Kết quả:

+------------------------------+
| EXTRACT(MONTH FROM 20301125) |
+------------------------------+
|                           11 |
+------------------------------+

Hoặc thậm chí như sau (sử dụng năm có hai chữ số):

SELECT EXTRACT(YEAR FROM 301125);

Kết quả:

+---------------------------+
| EXTRACT(YEAR FROM 301125) |
+---------------------------+
|                      2030 |
+---------------------------+

Nhưng hãy cẩn thận ở đây - MariaDB về cơ bản phải đoán đó là năm nào. Đây là những gì sẽ xảy ra nếu tôi tăng năm từ 30 lên 80:

SELECT EXTRACT(YEAR FROM 801125);

Kết quả:

+---------------------------+
| EXTRACT(YEAR FROM 801125) |
+---------------------------+
|                      1980 |
+---------------------------+

Vì vậy, trong trường hợp này, chuyển 30 dẫn đến 2030 nhưng chuyển 80 trả về 1980 .

Ngoài ra, nó phải có ý nghĩa như một cuộc hẹn hò. Đây là những gì sẽ xảy ra nếu tôi sử dụng một ngày không hợp lệ:

SELECT EXTRACT(YEAR FROM 20300135);

Kết quả:

+-----------------------------+
| EXTRACT(YEAR FROM 20300135) |
+-----------------------------+
|                        NULL |
+-----------------------------+

Các dấu phân cách khác

Bạn có thể sử dụng các dấu phân cách khác cho ngày. MariaDB khá dễ dãi khi nói đến dấu phân cách ngày tháng. Dưới đây là một số ví dụ hợp lệ:

SELECT 
    EXTRACT(MONTH FROM '2030/06/25'),
    EXTRACT(MONTH FROM '2030,06,25'),
    EXTRACT(MONTH FROM '2030:06:25'),
    EXTRACT(MONTH FROM '2030;06!25');

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

EXTRACT(MONTH FROM '2030/06/25'): 6
EXTRACT(MONTH FROM '2030,06,25'): 6
EXTRACT(MONTH FROM '2030:06:25'): 6
EXTRACT(MONTH FROM '2030;06!25'): 6

Ngày hiện tại

Chúng ta có thể chuyển NOW() làm đối số ngày để sử dụng ngày hiện tại:

SELECT 
    NOW(),
    EXTRACT(MONTH FROM NOW());

Kết quả:

+---------------------+---------------------------+
| NOW()               | EXTRACT(MONTH FROM NOW()) |
+---------------------+---------------------------+
| 2021-05-16 10:06:21 |                         5 |
+---------------------+---------------------------+

Ngày không hợp lệ

Khi vượt qua một ngày không hợp lệ, EXTRACT() trả về null :

SELECT EXTRACT(YEAR FROM 'Friday');

Kết quả:

+-----------------------------+
| EXTRACT(YEAR FROM 'Friday') |
+-----------------------------+
|                        NULL |
+-----------------------------+

Đơn vị ngày / giờ không hợp lệ

Khi vượt qua một đơn vị ngày / giờ không hợp lệ, EXTRACT() trả về một lỗi:

SELECT EXTRACT(DECADE FROM '2030-06-25');

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'DECADE FROM '2030-06-25')' at line 1

Thiếu đối số

Gọi EXTRACT() mà không chuyển bất kỳ đối số nào dẫn đến lỗi:

SELECT EXTRACT();

Kết quả:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 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. Cách WEIGHT_STRING () hoạt động trong MariaDB

  2. Những gì khách hàng của chúng tôi mong muốn:Giới thiệu Tài liệu Doanh nghiệp của MariaDB

  3. MariaDB CURRENT_TIMESTAMP () Giải thích

  4. Cách UPDATEXML () hoạt động trong MariaDB

  5. So sánh MariaDB Enterprise Backup với ClusterControl Backup Management