3.1 Danh sách hàm làm việc với ngày giờ
Ngày và giờ là một trong những loại dữ liệu phổ biến nhất được lưu trữ trong cơ sở dữ liệu. Đó là lý do tại sao danh sách các hàm để làm việc với chúng rất lớn. Dưới đây là những cái phổ biến nhất:
# | Chức năng | Sự miêu tả |
---|---|---|
1 | HIỆN TẠI () | Trả về ngày hiện tại |
2 | HIỆN THỜI() | Trả về thời gian hiện tại |
3 | BÂY GIỜ(), ĐỊA PHƯƠNG() | Trả về ngày hiện tại và thời gian hiện tại |
4 | NĂM() | Trả về năm kể từ ngày |
5 | THÁNG() | Trả về tháng từ một ngày |
6 | NGÀY(), NGÀYTHÁNG() | Trả về ngày từ một ngày |
7 | GIỜ() | Chỉ trả về giờ từ thời gian |
số 8 | PHÚT() | Thông báo phút từ thời gian |
9 | THỨ HAI() | Trả về giây từ thời gian |
10 | DAYNAME() | Trả về tên của ngày trong tuần: Thứ hai, ... |
mười một | MONTHNAME() | Trả về tên của tháng: January, ... |
12 | TUẦN() | Trả về tuần từ một ngày |
13 | NGÀY TRONG TUẦN() | Trả về số ngày trong tuần: Thứ hai - 0, Thứ ba - 1 |
14 | TUẦN NĂM () | Trả về số tuần của năm |
15 | NGÀY TRONG TUẦN() | Trả về số ngày trong tuần: Chủ Nhật - 1, Thứ Hai - 2 |
16 | NGÀY NĂM () | Trả về ngày trong năm: 1-366 |
17 | NGÀY() | Chỉ trả về ngày từ một đối tượng "datetime" |
18 | THÊM() | Thêm ngày vào một ngày |
19 | PHỤ CẤP () | Trừ ngày từ một ngày |
20 | THÊM THỜI GIAN() | Thêm thời gian |
21 | SUBTIME() | Trừ thời gian từ thời gian |
Tôi cố tình nhóm các chức năng thành các nhóm nhỏ để dễ hiểu cách làm việc với chúng. Dưới đây chúng tôi sẽ xem xét một chức năng từ mỗi nhóm.
Bạn có thể tìm thấy danh sách đầy đủ các hàm để làm việc với ngày và giờ tại liên kết: https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
3.2 Các hàm gọi
Nhân tiện, vì chúng ta đang học rất nhiều hàm nên tôi nghĩ sẽ hữu ích nếu đề cập rằng toán tử SELECT
không cần phải được sử dụng với FROM
. Nó có thể trả về giá trị của bất kỳ biểu thức nào. Chế độ xem chung được đưa ra bởi mẫu:
SELECT expression
Và nếu bạn muốn gọi một số chức năng, thì bạn cần viết mã như sau:
SELECT function(options)
Dưới đây tôi sẽ đưa ra một số ví dụ về hoạt động của toán tử SELECT
mà không cần truy cập vào bảng:
# | Lời yêu cầu | Kết quả |
---|---|---|
1 | CHỌN 1+1 | 2 |
2 | CHỌN 13 CHẾ ĐỘ 5 | 3 |
3 | CHỌN RAND() | 0,20771444235715497 |
4 | CHỌN CÒN LẠI () | 2022-06-04 |
5 | CHỌN GIỜ GIỜ() | 00:06:02 |
6 | CHỌN NGAY () | 2022-06-04 00:06:43 |
Và, như bạn có thể thấy, trong bảng trên, để lấy ngày giờ hiện tại, bạn chỉ cần sử dụng một trong các hàm:
CURDATE()
- ngay hiện tại;CURTIME()
- thời điểm hiện tại;NOW()
- ngày giờ hiện tại.
3.3 Nhóm dữ liệu theo năm tháng
Hãy nhớ lại bảng nhiệm vụ của chúng tôi với các nhiệm vụ cho nhân viên. Hãy cố gắng nhóm các nhiệm vụ từ bảng này theo năm. Để làm điều này, chúng tôi sử dụng hàm YEAR()
, trả về năm kể từ ngày được chuyển đến nó.
Phiên bản đầu tiên của truy vấn của chúng tôi sẽ trông như thế này:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
deadline
FROM task
Kết quả của truy vấn này sẽ là:
nhận dạng | Mã hiệu công nhân | tên | năm | thời hạn |
---|---|---|---|---|
1 | 1 | Sửa lỗi ở frontend | 2022 | 2022-06-01 |
2 | 2 | Sửa lỗi trên backend | 2022 | 2022-06-15 |
3 | 5 | Mua cà phê | 2022 | 2022-07-01 |
4 | 5 | Mua cà phê | 2022 | 2022-08-01 |
5 | 5 | Mua cà phê | 2022 | 2022-09-01 |
6 | (VÔ GIÁ TRỊ) | Dọn dẹp văn phòng | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
7 | 4 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
số 8 | 6 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
Chúng ta có thể thấy rằng tất cả các hàng đều có cùng năm, vì vậy hãy sử dụng hai trường - năm và tháng. Phiên bản thứ hai của truy vấn của chúng tôi sẽ trông như thế này:
SELECT
id,
employee_id ,
name,
YEAR(deadline) AS year,
MONTH(deadline) AS month,
deadline
FROM task
Kết quả của truy vấn này sẽ là:
nhận dạng | Mã hiệu công nhân | tên | năm | tháng | thời hạn |
---|---|---|---|---|---|
1 | 1 | Sửa lỗi ở frontend | 2022 | 6 | 2022-06-01 |
2 | 2 | Sửa lỗi trên backend | 2022 | 6 | 2022-06-15 |
3 | 5 | Mua cà phê | 2022 | 7 | 2022-07-01 |
4 | 5 | Mua cà phê | 2022 | số 8 | 2022-08-01 |
5 | 5 | Mua cà phê | 2022 | 9 | 2022-09-01 |
6 | (VÔ GIÁ TRỊ) | Dọn dẹp văn phòng | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
7 | 4 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
số 8 | 6 | Tận hưởng cuộc sống | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) | (VÔ GIÁ TRỊ) |
Tôi sẽ không cho bạn biết cách nhóm các nhiệm vụ theo năm và tháng - bạn đã nghiên cứu điều này rồi: sử dụng toán tử GROUP BY
.