Trong SQL Server, bạn có thể sử dụng DAY()
hàm để trả về phần “ngày” của ngày tháng. Hàm này trả về một số nguyên đại diện cho ngày trong tháng (không phải ngày trong tuần).
Dưới đây là các ví dụ về cách sử dụng chức năng này.
Cú pháp
Cú pháp như sau:
DAY ( date )
Nơi date
là một biểu thức phân giải thành một trong các kiểu dữ liệu sau:
- ngày
- ngày giờ
- bộ datetimeoffs
- datetime2
- smalldatetime
- thời gian
Đây có thể là một biểu thức cột, biểu thức, chuỗi ký tự hoặc biến do người dùng xác định.
Ví dụ
Dưới đây là một ví dụ cơ bản về cách nó hoạt động:
SELECT SYSDATETIME() AS 'Date', DAY(SYSDATETIME()) AS 'Day';
Kết quả:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Vì vậy, DAY()
hàm có thể trích xuất ngày từ datetime2 giá trị (được trả về bởi SYSDATETIME()
chức năng).
Ngày được cung cấp dưới dạng văn bản chuỗi
Dưới đây là một ví dụ trong đó ngày được cung cấp dưới dạng chuỗi ký tự.
SELECT DAY('2019-01-07') AS Result;
Kết quả:
+----------+ | Result | |----------| | 7 | +----------+
Và đây là một ví dụ trong đó ngày được cung cấp ở một định dạng khác:
SELECT DAY('07/01/2017') AS Result;
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
Tuy nhiên, tốt nhất là bạn nên tránh sử dụng ngày ở các định dạng như vậy. Nếu phải làm như vậy, bạn cần lưu ý đến cài đặt ngôn ngữ và / hoặc cài đặt định dạng ngày của phiên hiện tại.
Cài đặt ngôn ngữ
Kết quả của ví dụ trước sẽ phụ thuộc vào cài đặt ngôn ngữ và / hoặc cài đặt định dạng ngày của phiên hiện tại.
Khi chúng tôi đặt ngôn ngữ, định dạng ngày tháng được đặt ngầm định cùng một lúc.
Đây là những gì sẽ xảy ra khi chúng tôi cung cấp cùng một đối số ngày tháng trong hai môi trường ngôn ngữ khác nhau.
Anh
SET LANGUAGE British; SELECT DAY('07/01/2017') AS Result;
Kết quả:
+----------+ | Result | |----------| | 7 | +----------+
us_English
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
Cài đặt định dạng ngày
Cài đặt định dạng ngày có thể ghi đè cài đặt ngôn ngữ, vì vậy bạn cũng cần lưu ý về cài đặt này. Ví dụ:chúng tôi có thể đang sử dụng us_English cho ngôn ngữ của chúng tôi (có định dạng ngày mặc định là mdy ), nhưng chúng tôi có thể ghi đè định dạng ngày thành dmy .
Đây là một ví dụ:
us_English - Định dạng ngày mặc định
Tại đây, chúng tôi đặt ngôn ngữ thành us_English , điều này hoàn toàn đặt định dạng ngày thành myy .
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Kết quả:
+----------+ | Result | |----------| | 1 | +----------+
us_English - Ghi đè định dạng ngày
Tại đây, chúng tôi đặt ngôn ngữ thành us_English (đặt định dạng ngày một cách hoàn toàn), nhưng sau đó chúng tôi đặt định dạng ngày một cách rõ ràng thành dmy . Điều này ghi đè định dạng ngày đã được đặt ngầm khi chúng tôi đặt ngôn ngữ.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT DAY('07/01/2017') AS Result;
Kết quả:
+----------+ | Result | |----------| | 7 | +----------+
Trả lại tên ngày
Nếu bạn cần trả lại tên ngày (thay vì số ngày), hãy xem 3 cách để lấy tên ngày từ một ngày trong SQL Server.