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:
YYYYMMDDhanya untuk tanggal (tidak ada porsi waktu); perhatikan di sini:tidak ada tanda hubung! , itu sangat penting!YYYY-MM-DDadalah TIDAK terlepas dari pengaturan format tanggal di SQL Server Anda dan akan TIDAK bekerja dalam segala situasi!
atau:
YYYY-MM-DDTHH:MM:SSuntuk 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