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

Kesalahan SQL:Konversi tipe data varchar ke tipe data datetime menghasilkan nilai di luar rentang

Format string datetime yang aman untuk digunakan di SQL Server adalah

YYYYMMDD HH:MM:SS atau YYYY-MM-DDTHH:MM:SS .

Konversi yang Anda miliki akan gagal jika SET DATEFORMAT adalah dmy. SETEL BAHASA akan secara otomatis mengatur format tanggal untuk Anda. Saya pikir keduanya german dan norwegian gunakan dmy.

Ini akan gagal:

set language norwegian

declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'

DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'/'+SUBSTRING(@F7,4,2)+'/'+LEFT(@F7,2)

DECLARE @time DATETIME
SET @time =  CONVERT(DATETIME, @Date + ' ' + @F8)

Lakukan seperti ini sebagai gantinya (menggunakan YYYY-MM-DDTHH:MM:SS) agar aman terlepas dari pengaturan bahasa/format tanggal.

declare @F7 varchar(10) = '26/04/2011'
declare @F8 varchar(10) = '00:09:13'

DECLARE @Date VARCHAR(20)
SET @Date = RIGHT(@F7,4)+'-'+SUBSTRING(@F7,4,2)+'-'+LEFT(@F7,2)

DECLARE @time DATETIME
SET @time =  CONVERT(DATETIME, @Date + 'T' + @F8)


  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 mengatasi sql server 2008 restore error 3203

  2. Temukan semua catatan simpul daun menggunakan hierarkiid

  3. Ambil definisi kolom untuk kumpulan hasil prosedur tersimpan

  4. Kembalikan Informasi Kolom dari Server Tertaut di SQL Server (Contoh T-SQL)

  5. Sintaks salah di dekat 'OFFSET'. Penggunaan opsi NEXT yang tidak valid dalam pernyataan FETCH di inti Entity Framework