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ử SELECTkhô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ử SELECTmà 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.