Bạn có thể sử dụng hàm T-SQL DATEPART()
để trả về số tuần từ một ngày trong SQL Server.
Theo "số tuần", ý tôi là số của tuần trong năm kể từ ngày được chỉ định.
Ví dụ
Để trả về số tuần, hãy sử dụng week
là đối số đầu tiên của DATEPART()
chức năng.
DECLARE @date date = '2020-07-20';
SELECT DATEPART(week, @date);
Kết quả:
30
Đối số thay thế
Ngoài ra, bạn có thể sử dụng wk
hoặc ww
là đối số đầu tiên để làm điều tương tự.
DECLARE @date date = '2024-07-20';
SELECT
DATEPART(week, @date) AS week,
DATEPART(wk, @date) AS wk,
DATEPART(ww, @date) AS ww;
Kết quả:
+--------+------+------+ | week | wk | ww | |--------+------+------| | 29 | 29 | 29 | +--------+------+------+
Bạn sẽ nhận thấy rằng số tuần trong các kết quả này khác với số tuần trong ví dụ trước, mặc dù cả hai ví dụ đều sử dụng ngày 20 tháng 7 làm ngày của chúng. Điều này là để được mong đợi.
Hai ví dụ sử dụng một năm khác nhau. Con số của tuần có thể bị ảnh hưởng bởi năm. Nói cách khác, chỉ vì ngày 20 tháng 7 là tuần thứ 30 trong một năm, điều đó không có nghĩa là nó sẽ là tuần thứ 30 hàng năm. Chỉ là điều cần lưu tâm.
Số tuần ISO
Bạn cũng có thể trả lại số tuần ISO từ một ngày bằng cách sử dụng iso_week
lý lẽ. Các tuần lễ ISO bắt đầu vào các ngày thứ Hai và tuần đầu tiên của năm bao gồm ngày 4 tháng 1 của năm đó.
Do đó, những ngày đầu tháng 1 có thể là một phần của tuần thứ 52 hoặc thứ 53 của năm trước và những ngày cuối tháng 12 là một phần của tuần đầu tiên của năm tiếp theo.