Saat Anda terhubung ke SQL Server, biasanya format tanggal ditentukan oleh bahasa Anda. Bahasa default untuk sesi adalah bahasa untuk login sesi tersebut, kecuali jika diganti berdasarkan sesi dengan menggunakan Open Database Connectivity (ODBC) atau OLE DB API.
Pengaturan format tanggal mempengaruhi interpretasi string karakter saat dikonversi ke nilai tanggal untuk penyimpanan dalam database. Ini tidak mempengaruhi tampilan nilai tipe data tanggal yang disimpan dalam database atau format penyimpanan.
Terlepas dari kenyataan bahwa bahasa sesi Anda menentukan format tanggal, Anda dapat mengganti format tanggal jika diperlukan. Misalnya, jika bahasa Anda us_english
, format tanggalnya adalah mdy
(agar 01/07/2018 mewakili 1 Juli dan bukan 7 Januari). Anda dapat mengubah ini sehingga format tanggal dmy
(atau format lainnya) selama bahasa tetap us_english
.
Anda dapat menggunakan T-SQL untuk secara eksplisit mengatur format tanggal sesi saat ini dengan menggunakan SET DATEFORMAT
pernyataan.
Sintaks
Begini sintaksnya:
SET DATEFORMAT { format | @format_var }
Dimana format | @format_var
adalah urutan bagian tanggal.
Nilai yang valid adalah mdy
, dmy
, ymd
, ydm
, myd
, dan dym
. Ini dapat berupa Unicode atau kumpulan karakter bita ganda (DBCS) yang dikonversi ke Unicode.
Namun, perhatikan bahwa ydm
tidak didukung untuk tanggal , datetime2 dan datetimeoffset tipe data.
Contoh
Sebelum kita mengubah apa pun, mari kita lihat opsi pengguna saat ini. Ini akan memberi tahu kami apa bahasa saat ini dan format tanggal (serta beberapa hal lainnya):
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 | +-------------------------+----------------+
Kita bisa melihat bahwa bahasanya adalah us_english
dan format tanggalnya adalah mdy
(yang merupakan format tanggal default untuk bahasa tersebut).
Jadi mari kita ubah format tanggal, lalu periksa kembali opsi pengguna:
SET DATEFORMAT dmy; DBCC USEROPTIONS;
Hasil:
+-------------------------+----------------+ | Set Option | Value | |-------------------------+----------------| | textsize | -1 | | language | us_english | | dateformat | dmy | | 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 | +-------------------------+----------------+
Dan kita dapat melihat bahwa format tanggal telah berubah, sedangkan bahasanya tetap sama.
Jadi begini cara merubah format tanggal tanpa merubah bahasa. Seperti yang disebutkan, jika Anda mengubah bahasa, itu akan secara implisit mengatur format tanggal pada waktu yang sama. Jika itu yang ingin Anda lakukan, lihat Cara Mengatur Bahasa Saat Ini di SQL Server (T-SQL).