Ada banyak format yang didukung oleh SQL Server - lihat MSDN Books Online tentang CAST dan CONVERT . Sebagian besar format itu tergantung pada pengaturan apa yang Anda miliki - karena itu, pengaturan ini mungkin berfungsi beberapa kali - dan kadang-kadang tidak.
Cara untuk mengatasi ini adalah dengan menggunakan format tanggal ISO-8601 (sedikit disesuaikan) yang didukung oleh SQL Server - format ini selalu berfungsi - terlepas dari bahasa SQL Server Anda dan pengaturan format tanggal .
Format ISO-8601 didukung oleh SQL Server hadir dalam dua rasa:
YYYYMMDDhanya untuk tanggal (tanpa porsi waktu); perhatikan di sini: tidak ada garis putus-putus! , itu sangat penting! YYYY-MM-DDadalah TIDAK independen dari pengaturan dateformat di SQL Server 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 dapat dihilangkan), dan ditetapkan Tsebagai pembatas antara tanggal dan bagian waktu Anda DATETIME.
Ini berlaku untuk SQL Server 2000 dan yang lebih baru.
Jadi dalam kasus konkret Anda - gunakan string ini:
insert into table1 values('2012-02-21T18:10:00', '2012-01-01T00:00:00');
dan Anda harus baik-baik saja (catatan: Anda perlu menggunakan format internasional 24 jam daripada format AM / PM 12 jam untuk ini).
Atau : jika Anda menggunakan SQL Server 2008 atau yang lebih baru, Anda juga dapat menggunakan DATETIME2tipe data (bukan yang biasa DATETIME) dan saat ini Anda INSERThanya akan berfungsi tanpa masalah! :-) DATETIME2jauh lebih baik dan jauh lebih sedikit pemilih pada konversi - dan itu 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 membingungkan - begitulah adanya. Tetapi dengan YYYYMMDDformat, Anda harus baik untuk versi SQL Server dan untuk pengaturan bahasa dan format tanggal apa pun di SQL Server Anda.