Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Menemukan Format Tanggal yang Digunakan di Sesi Saat Ini di SQL Server (T-SQL)

Saat menggunakan SQL Server, koneksi Anda saat ini menyertakan sejumlah opsi yang menentukan hal-hal seperti bahasa, format tanggal, dll. Ini dapat diatur pada apa pun defaultnya, tetapi juga dapat diganti selama sesi dengan menggunakan SET pernyataan.

Format tanggal mempengaruhi interpretasi string karakter karena dikonversi ke nilai tanggal untuk penyimpanan dalam database. Saat bahasa disetel menggunakan SET LANGUAGE , pengaturan format tanggal diatur secara implisit. Ini dapat secara eksplisit diganti dengan SET DATEFORMAT pernyataan.

Bagaimanapun, Anda dapat menemukan format tanggal saat ini dengan menggunakan DBCC USEROPTIONS memerintah. Perintah ini mengembalikan SET opsi yang telah disetel untuk koneksi saat ini.

Sintaks

Sintaksnya seperti ini:

DBCC USEROPTIONS  
[ WITH NO_INFOMSGS ]

NO_INFOMSGS opsional argumen menekan semua pesan informasi yang memiliki tingkat keparahan dari 0 hingga 10.

Contoh

Berikut ini contoh menjalankan perintah, dan hasil yang saya dapatkan di mesin uji saya saat ini:

DBCC USEROPTIONS;

Hasil:

+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

Seperti yang disebutkan, Anda dapat mengubah opsi ini dengan SET pernyataan.

Berikut ini contoh mengubah bahasa sesi saat ini, lalu menjalankan perintah lagi:

SET LANGUAGE German;
DBCC USEROPTIONS;

Hasil:

+-------------------------+----------------+
| 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.

Jadi kita dapat melihat bahwa tidak hanya bahasa yang berubah, tetapi format tanggal juga berubah.

Namun, jika ini bukan format tanggal yang diinginkan, format tanggal dapat diubah secara eksplisit menggunakan SET DATEFORMAT .

Seperti ini:

SET DATEFORMAT mdy;
DBCC USEROPTIONS;

Hasil:

+-------------------------+----------------+
| 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 |
+-------------------------+----------------+

Dan kita dapat melihat bahwa format tanggal telah diubah seperti yang ditentukan, sambil membiarkan bahasa apa adanya.

Tampilan sys.dm_exec_requests

Anda juga dapat mengembalikan format tanggal yang digunakan dalam permintaan saat ini dengan menanyakan sys.dm_exec_requests tampilan sistem. Tampilan ini mengembalikan sekelompok besar kolom yang bagus, tetapi Anda dapat mempersempitnya menjadi hanya kolom yang Anda minati. Dalam kasus kami, kami hanya tertarik pada satu kolom – date_format kolom:

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

Hasil:

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

Saya juga mempersempit kueri menjadi hanya permintaan saat ini. Saya melakukan ini dengan menggunakan @@SPID , yang mengembalikan ID sesi dari proses pengguna saat ini.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara mengubah nilai kolom identitas secara terprogram?

  2. Mendapatkan nomor minggu dari tanggal di MS SQL Server 2005?

  3. SQL MAX dari beberapa kolom?

  4. Apa cara terbaik untuk menyimpan koordinat (bujur/lintang, dari Google Maps) di SQL Server?

  5. Menguasai Penggunaan Stoplist Dengan SQL Server Full-Text Search (FTS)