Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kesalahan konversi saat mengonversi 'nvarchar' ke 'datetime' di server sql

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), dan T . tetap sebagai pembatas antara bagian tanggal dan waktu dari DATETIME . 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyemai kembali identitas tabel di SQL Server 2008 dan membatalkan semuanya dengan aman?

  2. Pilih 10 persen teratas, juga persen terbawah di SQL Server

  3. Loop tak terbatas di CTE saat mem-parsing tabel referensi sendiri

  4. grup sql hanya dengan baris yang berurutan

  5. Hapus skrip SQL Server 2008