Trong SQL Server, bạn có thể sử dụng SET DATEFIRST
để đặt ngày đầu tuần.
Ngày đầu tuần có thể khác nhau, tùy thuộc vào ngôn ngữ được sử dụng. Ví dụ:mặc định cho us_English là 7 (Chủ nhật), trong khi mặc định cho Deutsch (tiếng Đức) là 1 (Thứ Hai).
Bài viết này trình bày cách thay đổi ngày đầu tuần mà không thay đổi ngôn ngữ.
Cú pháp
Đầu tiên, cú pháp như sau:
SET DATEFIRST { number | @number_var }
Số number | @number_var
là một số nguyên cho biết ngày đầu tiên trong tuần. Đây là một số từ 1 đến 7.
Bảng sau đây cho thấy ánh xạ giữa số và ngày trong tuần.
Giá trị | Ngày đầu tuần là |
---|---|
1 | Thứ Hai |
2 | Thứ Ba |
3 | Thứ Tư |
4 | Thứ Năm |
5 | Thứ Sáu |
6 | Thứ Bảy |
7 | Chủ nhật |
Vì vậy, một giá trị nói, 3
, sẽ đặt thứ Tư là ngày đầu tiên trong tuần.
Ví dụ 1 - Cách sử dụng cơ bản
Dưới đây là một ví dụ để chứng minh cú pháp.
SET DATEFIRST 1;
Điều này đặt ngày đầu tiên của tuần thành thứ Hai (chúng ta có thể thấy từ biểu đồ trên rằng giá trị của 1
bản đồ đến thứ Hai).
Chúng tôi có thể xem cài đặt hiện tại bằng cách sử dụng @@DATEFIRST
để trả về giá trị hiện tại của SET DATEFIRST
.
SELECT @@DATEFIRST AS 'Result';
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
Ví dụ 2 - Ghi đè Cài đặt Ngôn ngữ
Ví dụ này minh họa cách SET DATEFIRST
cài đặt phù hợp với cài đặt ngôn ngữ.
SET LANGUAGE us_english; SELECT @@LANGUAGE AS 'LANGUAGE Before', @@DATEFIRST AS 'DATEFIRST Before'; SET DATEFIRST 1; SELECT @@LANGUAGE AS 'LANGUAGE After', @@DATEFIRST AS 'DATEFIRST After';
Kết quả:
+-------------------+--------------------+ | LANGUAGE Before | DATEFIRST Before | |-------------------+--------------------| | us_english | 7 | +-------------------+--------------------+ Changed language setting to us_english. +------------------+-------------------+ | LANGUAGE After | DATEFIRST After | |------------------+-------------------| | us_english | 1 | +------------------+-------------------+
Vì vậy, chúng ta có thể thấy rằng ngôn ngữ vẫn như cũ, nhưng ngày đầu tiên của tuần đã thay đổi.
Ví dụ này sử dụng SET LANGUAGE
để đặt ngôn ngữ của phiên hiện tại (như đã đề cập, được sử dụng để xác định ngày đầu tiên trong tuần). Cài đặt ngôn ngữ cũng đặt định dạng ngày một cách hoàn toàn. Nếu cần, bạn có thể sử dụng SET DATEFORMAT
để ghi đè cài đặt này cho định dạng ngày.
Để xem DATEFIRST
nào ánh xạ cài đặt tới từng ngôn ngữ, đây là Danh sách Tất cả Ngôn ngữ và Định dạng Ngày được Liên kết trong SQL Server 2017.
Bạn cũng có thể sử dụng sp_helplanguage
thủ tục được lưu trữ để trả lại danh sách đó. Để thực hiện việc này, hãy xem Cách tìm định dạng ngày được sử dụng cho một ngôn ngữ cụ thể trong SQL Server (T-SQL).