Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách tìm định dạng ngày được sử dụng trong phiên hiện tại trong SQL Server (T-SQL)

Khi sử dụng SQL Server, kết nối hiện tại của bạn bao gồm một số tùy chọn xác định những thứ như ngôn ngữ, định dạng ngày tháng, v.v. Những tùy chọn này có thể được đặt ở bất kỳ giá trị nào mặc định, nhưng chúng cũng có thể bị ghi đè trong phiên bằng cách sử dụng SET tuyên bố.

Định dạng ngày ảnh hưởng đến việc diễn giải các chuỗi ký tự khi chúng được chuyển đổi thành các giá trị ngày tháng để lưu trữ trong cơ sở dữ liệu. Khi ngôn ngữ được đặt bằng SET LANGUAGE , cài đặt định dạng ngày được đặt hoàn toàn cho phù hợp. Điều này có thể được ghi đè rõ ràng bằng SET DATEFORMAT tuyên bố.

Trong mọi trường hợp, bạn có thể tìm định dạng ngày hiện tại bằng cách sử dụng DBCC USEROPTIONS yêu cầu. Lệnh này trả về SET các tùy chọn đã được đặt cho kết nối hiện tại.

Cú pháp

Cú pháp như sau:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

NO_INFOMSGS tùy chọn đối số ngăn chặn tất cả các thông báo cung cấp thông tin có mức độ nghiêm trọng từ 0 đến 10.

Ví dụ

Dưới đây là ví dụ về cách chạy lệnh và kết quả tôi nhận được trên máy kiểm tra hiện tại của mình:

DBCC USEROPTIONS;

Kết quả:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | us_english     |
| dateformat              | mdy            |
| datefirst               | 7              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Như đã đề cập, bạn có thể thay đổi các tùy chọn này bằng SET tuyên bố.

Dưới đây là một ví dụ về việc thay đổi ngôn ngữ của phiên hiện tại, sau đó chạy lại lệnh:

SET LANGUAGE German;
DBCC USEROPTIONS;

Kết quả:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | Deutsch        |
| dateformat              | dmy            |
| datefirst               | 1              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+
Die Spracheneinstellung wurde in Deutsch geändert.

Vì vậy, chúng ta có thể thấy rằng không chỉ ngôn ngữ thay đổi mà cả định dạng ngày tháng cũng thay đổi.

Tuy nhiên, nếu đây không phải là định dạng ngày mong muốn, định dạng ngày có thể được thay đổi rõ ràng bằng cách sử dụng SET DATEFORMAT .

Như thế này:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Kết quả:

+-------------------------+----------------+
| Set Option              | Value          |
|-------------------------+----------------|
| textsize                | -1             |
| language                | Deutsch        |
| dateformat              | mdy            |
| datefirst               | 1              |
| lock_timeout            | 5000           |
| quoted_identifier       | SET            |
| arithabort              | SET            |
| ansi_null_dflt_on       | SET            |
| ansi_warnings           | SET            |
| ansi_padding            | SET            |
| ansi_nulls              | SET            |
| concat_null_yields_null | SET            |
| isolation level         | read committed |
+-------------------------+----------------+

Và chúng ta có thể thấy rằng định dạng ngày tháng đã được thay đổi như đã chỉ định, trong khi vẫn giữ nguyên ngôn ngữ.

Chế độ xem sys.dm_exec_requests

Bạn cũng có thể trả lại định dạng ngày đang được sử dụng trong yêu cầu hiện tại bằng cách truy vấn sys.dm_exec_requests chế độ xem hệ thống. Chế độ xem này trả về một loạt cột lớn đẹp mắt, nhưng bạn có thể thu hẹp nó xuống chỉ những cột bạn quan tâm. Trong trường hợp của chúng tôi, chúng tôi chỉ quan tâm đến một cột - date_format cột:

SELECT r.date_format
FROM master.sys.dm_exec_requests r
WHERE r.session_id = @@SPID;

Kết quả:

+---------------+
| date_format   |
|---------------|
| mdy           |
+---------------+

Tôi cũng thu hẹp truy vấn xuống chỉ yêu cầu hiện tại. Tôi đã thực hiện việc này bằng cách sử dụng @@SPID , trả về ID phiên của quy trình người dùng hiện tại.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách đơn giản để chuyển đổi các cột và hàng trong SQL?

  2. Chọn dữ liệu thông qua một chức năng được định giá bằng bảng trong SQL Server

  3. Cách trả về kết quả truy vấn dưới dạng danh sách được phân tách bằng dấu phẩy trong SQL Server - STRING_AGG ()

  4. Cách bỏ qua lỗi khóa trùng lặp trong T-SQL (SQL Server)

  5. Trả về danh sách các sự kiện kích hoạt máy chủ trong SQL Server