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.