SQL Server tidak menyimpan DateTime
dalam format string apa pun - disimpan sebagai nilai numerik 8 byte.
Berbagai pengaturan (bahasa, format tanggal) hanya memengaruhi cara DateTime
ditampilkan kepada Anda di SQL Server Management Studio - atau bagaimana string tersebut diuraikan saat Anda mencoba mengonversi string menjadi DateTime
.
Ada banyak format yang didukung oleh SQL Server - lihat Buku MSDN Online di CAST dan KONVERSI . Sebagian besar format tersebut bergantung pada setelan apa yang Anda miliki - oleh karena itu, setelan ini mungkin berfungsi beberapa kali - dan terkadang tidak.
Cara mengatasinya adalah dengan menggunakan 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.
Ini berlaku untuk SQL Server 2000 dan yang lebih baru.
Jika Anda menggunakan SQL Server 2008 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.