Dưới đây là 5 chức năng cho phép bạn trả về số tuần của một ngày trong MariaDB. Bốn lượt trả về chỉ trong tuần và một lượt trả về cả tuần và năm.
WEEK()
Chức năng
WEEK()
hàm trả về tuần cho một ngày nhất định.
Ví dụ:
SELECT WEEK('2023-07-25');
Kết quả:
+--------------------+ | WEEK('2023-07-25') | +--------------------+ | 30 | +--------------------+
WEEK()
hàm chấp nhận một đối số thứ hai tùy chọn để chỉ định chế độ. Kết quả thực tế bạn nhận được từ chức năng này sẽ phụ thuộc vào chế độ đang được sử dụng. Nếu đối số chế độ bị bỏ qua, giá trị của default_week_format
biến hệ thống được sử dụng.
Xem Cách thực hiện WEEK()
Hoạt động trong MariaDB để biết thêm về các chế độ và ví dụ của từng chế độ.
EXTRACT()
Chức năng
chức năng cho phép bạn trích xuất một đơn vị cụ thể từ ngày. Do đó, bạn có thể sử dụng nó để trích xuất tuần (cũng như các đơn vị khác) từ ngày. EXTRACT
()
Ví dụ:
SELECT EXTRACT(WEEK FROM '2023-07-25');
Kết quả:
+---------------------------------+ | EXTRACT(WEEK FROM '2023-07-25') | +---------------------------------+ | 30 | +---------------------------------+
DATE_FORMAT()
Chức năng
DATE_FORMAT()
chức năng cho phép bạn định dạng một ngày dựa trên một chuỗi định dạng. Chuỗi định dạng chỉ định cách định dạng ngày.
Do đó, bạn có thể sử dụng chức năng này để trả về tuần (cũng như bất kỳ đơn vị nào khác) kể từ ngày. Có nhiều tùy chọn khác nhau để trả về số tuần, tùy thuộc vào ngày bắt đầu của tuần, v.v.
Dưới đây là một ví dụ trả về tuần ở nhiều dạng khác nhau:
SELECT
DATE_FORMAT('2023-01-01', '%U') AS "%U",
DATE_FORMAT('2023-01-01', '%u') AS "%u",
DATE_FORMAT('2023-01-01', '%V') AS "%V",
DATE_FORMAT('2023-01-01', '%v') AS "%v";
Kết quả:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 01 | 00 | 01 | 52 | +------+------+------+------+
Dưới đây là mô tả về từng mã định dạng đó:
Định dạng chỉ định | Mô tả |
---|---|
%U | Số tuần (00-53), khi ngày đầu tiên của tuần là Chủ nhật. |
%u | Số tuần (00-53), khi ngày đầu tiên của tuần là thứ Hai. |
%V | Số tuần (01-53), khi ngày đầu tiên của tuần là Chủ nhật. Được sử dụng với %X . |
%v | Số tuần (01-53), khi ngày đầu tiên của tuần là thứ Hai. Được sử dụng với %x . |
Và đây là mô tả về %X
và %x
như được đề cập trong bảng trên:
Định dạng chỉ định | Mô tả |
---|---|
%X | Năm có 4 chữ số khi ngày đầu tiên của tuần là Chủ nhật. Được sử dụng với %V . |
%x | Năm có 4 chữ số khi ngày đầu tiên của tuần là thứ Hai. Được sử dụng với %v . |
Chúng tôi có thể kết hợp các chỉ định định dạng để trả lại năm và tuần cùng nhau nếu được yêu cầu:
SELECT
DATE_FORMAT('2023-01-01', '%X, %V') AS "%X, %V",
DATE_FORMAT('2023-01-01', '%x, %v') AS "%x, %v";
Kết quả:
+----------+----------+ | %X, %V | %x, %v | +----------+----------+ | 2023, 01 | 2022, 52 | +----------+----------+
Lưu ý rằng số tuần không phải lúc nào cũng phản ánh các ví dụ trên - nó phụ thuộc vào ngày thực tế được sử dụng.
Hãy dời ngày sang năm sau:
SELECT
DATE_FORMAT('2024-01-01', '%U') AS "%U",
DATE_FORMAT('2024-01-01', '%u') AS "%u",
DATE_FORMAT('2024-01-01', '%V') AS "%V",
DATE_FORMAT('2024-01-01', '%v') AS "%v";
Kết quả:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 00 | 01 | 53 | 01 | +------+------+------+------+
Lần này, chúng tôi nhận được một tập hợp kết quả khác.
Dưới đây là những gì sẽ xảy ra khi chúng ta bước sang năm:
SELECT
DATE_FORMAT('2024-12-12', '%U') AS "%U",
DATE_FORMAT('2024-12-12', '%u') AS "%u",
DATE_FORMAT('2024-12-12', '%V') AS "%V",
DATE_FORMAT('2024-12-12', '%v') AS "%v";
Kết quả:
+------+------+------+------+ | %U | %u | %V | %v | +------+------+------+------+ | 49 | 50 | 49 | 50 | +------+------+------+------+
Như bạn có thể thấy, việc trả lại số tuần không phải lúc nào cũng rõ ràng như chúng ta mong muốn.
Xem Chuỗi định dạng MariaDB để biết danh sách đầy đủ các chuỗi / mã định dạng có thể được sử dụng với DATE_FORMAT()
.
YEARWEEK()
Chức năng
Có thể lấy tuần và trong một năm. YEARWEEK()
hàm trả về năm và tuần cho một ngày nhất định.
Ví dụ:
SELECT YEARWEEK('2023-01-01');
Kết quả:
+------------------------+ | YEARWEEK('2023-01-01') | +------------------------+ | 202301 | +------------------------+
Năm trong kết quả có thể khác với năm trong đối số ngày cho tuần đầu tiên và tuần cuối cùng của năm.
Đây là những gì sẽ xảy ra nếu chúng ta tiến tới một năm:
SELECT YEARWEEK('2024-01-01');
Kết quả:
+------------------------+ | YEARWEEK('2024-01-01') | +------------------------+ | 202353 | +------------------------+
Như với WEEK()
hàm YEARWEEK()
hàm chấp nhận một đối số thứ hai tùy chọn để chỉ định chế độ. Kết quả thực tế bạn nhận được từ chức năng này sẽ phụ thuộc vào chế độ đang được sử dụng. Nếu đối số chế độ bị bỏ qua, giá trị của default_week_format
biến hệ thống được sử dụng.
Xem Cách thực hiện YEARWEEK()
Hoạt động trong MariaDB để biết thêm về các chế độ và ví dụ của từng chế độ.