Ada banyak format yang didukung oleh SQL Server - lihat MSDN Books Online di CAST dan CONVERT. Sebagian besar format tersebut bergantung pada setelan apa yang Anda miliki - oleh karena itu, setelan ini terkadang berfungsi - 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 yang 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 waktuDATETIME
.
Ini berlaku untuk SQL Server 2000 dan yang lebih baru.
Jadi dalam kasus khusus Anda - gunakan string ini:
insert into table1 values('2012-02-21T18:10:00', '2012-01-01T00:00:00');
dan Anda akan baik-baik saja (catatan:Anda harus menggunakan 24 jam international internasional format daripada format AM/PM 12 jam untuk ini).
Alternatifnya :jika Anda menggunakan SQL Server 2008 atau yang lebih baru, Anda juga dapat menggunakan DATETIME2
tipe data (bukan DATETIME
plain biasa ) dan INSERT
your Anda saat ini hanya akan bekerja tanpa masalah! :-) DATETIME2
jauh lebih baik dan tidak terlalu pilih-pilih dalam hal konversi - dan ini adalah tipe data tanggal/waktu yang direkomendasikan untuk SQL Server 2008 atau yang lebih baru.
SELECT
CAST('02-21-2012 6:10:00 PM' AS DATETIME2), -- works just fine
CAST('01-01-2012 12:00:00 AM' AS DATETIME2) -- works just fine
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.