Trong MySQL, bạn có thể sử dụng EXTRACT()
chức năng trích xuất các bộ phận từ một ngày tháng. Ví dụ:bạn có thể trích xuất phần năm, phần tháng hoặc phần ngày, v.v. Bạn cũng có thể trích xuất các phần từ thành phần thời gian, chẳng hạn như phút, giây, micro giây, v.v.
Bài viết này có các ví dụ để minh chứng.
Cú pháp
Cú pháp như sau:
EXTRACT (đơn vị TỪ ngày)
Đơn vị unit
là phần ngày mà bạn muốn trích xuất và date
là giá trị ngày tháng để trích xuất phần đó.
Xem bảng ở cuối bài viết này để biết danh sách các từ chỉ định đơn vị hợp lệ.
Ví dụ 1
Dưới đây là một ví dụ để chứng minh cách sử dụng cơ bản của hàm.
CHỌN CHIẾT XUẤT (NĂM TỪ '2019-01-01') LÀM 'Kết quả';
Kết quả:
+ -------- + | Kết quả | + -------- + | 2019 | + -------- +
Ví dụ 2 - Phần ngày tháng khác
Ở đây tôi trích xuất các phần ngày tháng khác nhau từ một ngày tháng.
SET @date ='2019-10-03'; CHỌN CHI TIẾT (NGÀY TỪ @date) NHƯ 'Ngày', TRÍCH (THÁNG TỪ @date) LÀM 'Tháng', CHIẾT XUẤT (NĂM TỪ @date) NHƯ 'Năm ';
Kết quả:
+ ------ + ------- + ------ + | Ngày | Tháng | Năm | + ------ + ------- + ------ + | 3 | 10 | 2019 | + ------ + ------- + ------ +
Ví dụ 3 - Trích xuất các phần thời gian
Ở đây tôi trích xuất các phần thời gian khác nhau của một ngày.
SET @date ='2019-10-03 12:35:05.123456'; CHỌN CHI TIẾT (GIỜ TỪ @date) LÀM 'Giờ', TRÍCH (PHÚT TỪ @date) LÀM 'Phút', TRÍCH (GIÂY TỪ @date) ngày) NHƯ 'Giây', TRÍCH (MICROSECOND TỪ @date) NHƯ 'Micro giây';
Kết quả:
+ ------- + --------- + --------- + -------------- + | Giờ | Biên bản | Giây | Microseconds | + ------- + --------- + --------- + -------------- + | 12 | 35 | 5 | 123456 | + ------- + --------- + --------- + -------------- +
Ví dụ 4 - Kết hợp các chỉ định đơn vị
Bạn cũng có thể kết hợp các từ chỉ định đơn vị, như sau:
SET @date ='2019-10-03 12:35:05.123456'; CHỌN CHI TIẾT (HOUR_MICROSECOND TỪ @date) NHƯ 'Kết quả';
Kết quả:
+ -------------- + | Kết quả | + -------------- + | 123505123456 | + -------------- +
Ví dụ này trả về mọi thứ từ phần giờ đến phần micro giây.
Một ví dụ về cơ sở dữ liệu
Dưới đây là một ví dụ về trích xuất năm và tháng từ một cột trong cơ sở dữ liệu:
SỬ DỤNG sakila; CHỌN Payment_date AS 'Date / Time', CHIẾT XUẤT (NĂM_MONTH TỪ Payment_date) AS 'Năm / Tháng' Thanh toán FROMWHERE Payment_id =1;
Kết quả:
+ --------------------- + ------------ + | Ngày / Giờ | Năm / Tháng | + --------------------- + ------------ + | 2005-05-25 11:30:37 | 200505 | + --------------------- + ------------ +
Ngày / Giờ hiện tại
Ở đây, tôi trích xuất phần tháng từ một ngày được tạo bằng CURDATE()
chức năng.
SELECT CURDATE (), EXTRACT (THÁNG TỪ CURDATE ());
Kết quả:
+ ------------ + ------------------------------- + | CURDATE () | TRÍCH (THÁNG TỪ CURDATE ()) | + ------------ + --------------------------- ---- + | 2018-06-26 | 6 | + ------------ + ------------------------------- +Trong ví dụ này, tôi trích xuất phần giờ từ ngày và giờ hiện tại (được tạo bằng
NOW()
chức năng).CHỌN NGAY BÂY GIỜ (), TRÍCH (GIỜ TỪ BÂY GIỜ ());Kết quả:
+ --------------------- + ------------------------ - + | NGAY BÂY GIỜ () | TRÍCH (GIỜ TỪ BÂY GIỜ ()) | + --------------------- + ------------------ -------- + | 2018-06-26 09:01:46 | 9 | + --------------------- + ------------------------- - +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’ |