Ada banyak format yang didukung oleh SQL Server - lihat Buku MSDN Online di CAST
dan CONVERT
. Sebagian besar format tersebut bergantung pada setelan apa yang Anda miliki - oleh karena itu, setelan ini mungkin berfungsi beberapa kali - dan terkadang tidak.
Cara untuk mengatasi ini adalah dengan menggunakan (sedikit disesuaikan) format tanggal ISO-8601 yang didukung oleh SQL Server - format ini berfungsi selalu - terlepas dari bahasa SQL Server dan pengaturan format tanggal.
Format ISO-8601 didukung oleh SQL Server hadir dalam dua rasa:
YYYYMMDD
hanya untuk tanggal (tidak ada porsi waktu); perhatikan di sini:tidak ada tanda hubung! , itu sangat penting!YYYY-MM-DD
adalah TIDAK terlepas dari pengaturan format tanggal di SQL Server Anda dan akan TIDAK bekerja dalam segala situasi!
atau:
YYYY-MM-DDTHH:MM:SS
untuk tanggal dan waktu - perhatikan di sini:format ini memiliki tanda hubung (tetapi mereka bisa dihilangkan), danT
. tetap sebagai pembatas antara bagian tanggal dan waktu dariDATETIME
. Anda .
Ini berlaku untuk SQL Server 2000 dan yang lebih baru.
Jika Anda menggunakan SQL Server 2008 atau yang lebih baru dan DATE
tipe data (hanya DATE
- tidak DATETIME
!), maka Anda juga dapat menggunakan YYYY-MM-DD
format dan itu akan berfungsi juga, dengan pengaturan apa pun di SQL Server Anda.
Jangan tanya saya mengapa seluruh topik ini begitu rumit dan agak membingungkan - memang begitu adanya. Tapi dengan YYYYMMDD
format, Anda akan baik-baik saja untuk semua versi SQL Server dan untuk bahasa dan pengaturan format tanggal apa pun di SQL Server Anda.
Rekomendasi untuk SQL Server 2008 dan yang lebih baru adalah menggunakan DATE
jika Anda hanya membutuhkan bagian tanggal, dan DATETIME2(n)
ketika Anda membutuhkan tanggal dan waktu. Anda harus mencoba untuk mulai menghapus DATETIME
tipe data jika memungkinkan