Trong MySQL, YEARWEEK()
hàm trả về năm và tuần cho một ngày nhất định. Bạn cung cấp ngày tháng làm đối số và hàm sẽ trả về kết quả tương ứng.
Bạn cũng có tùy chọn chỉ định bắt đầu tuần vào Chủ Nhật hay Thứ Hai và liệu tuần phải nằm trong phạm vi 0 đến 53 hay 1 đến 53.
Cú pháp
Bạn có thể sử dụng một trong hai hình thức sau:
YEARWEEK(date) YEARWEEK(date,mode)
Ở đâu:
-
date
là ngày bạn muốn trả về số năm và tuần. -
mode
là một con số chỉ định liệu tuần sẽ bắt đầu vào Chủ nhật hay Thứ Hai và liệu tuần phải nằm trong phạm vi 0 đến 53 hay 1 đến 53. Xem bảng bên dưới để biết các giá trị chế độ có thể có.
Nếu không có chế độ nào được chỉ định, chế độ là 0
.
Ví dụ 1 - Cách sử dụng cơ bản
Đây là một ví dụ để chứng minh.
SELECT YEARWEEK('2021-01-25') As 'Result';
Kết quả:
+--------+ | Result | +--------+ | 202104 | +--------+
Đây là một ví dụ với một ngày khác.
SELECT YEARWEEK('1999-12-25') As 'Result';
Kết quả:
+--------+ | Result | +--------+ | 199951 | +--------+
Ví dụ 2 - Chỉ định một Chế độ
Nếu bạn không chỉ định đối số thứ hai, thì YEARWEEK()
hàm sử dụng 0
như một chế độ.
Tuy nhiên, bạn cũng có tùy chọn cung cấp đối số thứ hai để chỉ định chế độ nào sẽ sử dụng. Ví dụ:
SELECT YEARWEEK('2019-11-23', 7) AS 'Mode 7';
Kết quả:
+--------+ | Mode 7 | +--------+ | 201946 | +--------+
Các giá trị chế độ khả thi như sau.
Chế độ | Ngày đầu tuần | Phạm vi | Tuần 1 là tuần đầu tiên… |
---|---|---|---|
0 | Chủ nhật | 0-53 | với một ngày Chủ nhật trong năm này |
1 | Thứ Hai | 0-53 | với 4 ngày trở lên trong năm nay |
2 | Chủ nhật | 1-53 | với một ngày Chủ nhật trong năm này |
3 | Thứ Hai | 1-53 | với 4 ngày trở lên trong năm nay |
4 | Chủ nhật | 0-53 | với 4 ngày trở lên trong năm nay |
5 | Thứ Hai | 0-53 | với một ngày Thứ Hai trong năm nay |
6 | Chủ nhật | 1-53 | với 4 ngày trở lên trong năm nay |
7 | Thứ Hai | 1-53 | với một ngày Thứ Hai trong năm nay |
Đây là những giá trị giống nhau có thể được sử dụng với WEEK()
chức năng.
Một điểm khác biệt giữa hai hàm này là WEEK()
hàm lấy chế độ mặc định của nó từ default_week_format
biến hệ thống (giá trị mặc định của biến này là 0
). YEARWEEK()
mặt khác, bỏ qua cài đặt này và sử dụng 0
làm giá trị mặc định của nó (bất kể default_week_format
cài đặt).
Ví dụ 3 - So sánh các chế độ
Dưới đây là so sánh nhanh về cách bạn có thể nhận được các kết quả khác nhau tùy thuộc vào chế độ đang được sử dụng.
Ba ví dụ sau sử dụng cùng một mã, nhưng với ba ngày khác nhau. Những ngày này liên tiếp - chúng xảy ra vào ngày 5, 6 và 7 của tháng Giêng. Như bạn có thể thấy, kết quả có thể khá khác nhau tùy thuộc vào ngày chính xác và chế độ được sử dụng.
Ngày 1
SET @date = '2019-01-05'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Kết quả:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201852 | 201901 | 201852 | 201901 | 201901 | 201853 | 201901 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Ngày 2
SET @date = '2019-01-06'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Kết quả:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201901 | 201901 | 201901 | 201902 | 201853 | 201902 | 201853 | +--------+--------+--------+--------+--------+--------+--------+--------+
Ngày 3
SET @date = '2019-01-07'; SELECT YEARWEEK(@date, 0) AS 'Mode 0', YEARWEEK(@date, 1) AS 'Mode 1', YEARWEEK(@date, 2) AS 'Mode 2', YEARWEEK(@date, 3) AS 'Mode 3', YEARWEEK(@date, 4) AS 'Mode 4', YEARWEEK(@date, 5) AS 'Mode 5', YEARWEEK(@date, 6) AS 'Mode 6', YEARWEEK(@date, 7) AS 'Mode 7';
Kết quả:
+--------+--------+--------+--------+--------+--------+--------+--------+ | Mode 0 | Mode 1 | Mode 2 | Mode 3 | Mode 4 | Mode 5 | Mode 6 | Mode 7 | +--------+--------+--------+--------+--------+--------+--------+--------+ | 201901 | 201902 | 201901 | 201902 | 201902 | 201901 | 201902 | 201901 | +--------+--------+--------+--------+--------+--------+--------+--------+