Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL грешка:Преобразуването на тип данни varchar в тип данни datetime доведе до стойност извън диапазона

Безопасните формати на низове за дата и час, които да използвате в SQL Server, са

YYYYMMDD HH:MM:SS или YYYY-MM-DDTHH:MM:SS .

Преобразуването, което имате, ще бъде неуспешно, ако SET DATEFORMAT е dmy. ЗАДАВАНЕ НА ЕЗИК автоматично ще зададе формат на датата за вас. Мисля, че и двете german и norwegian използвайте dmy.

Това няма да успее:

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)

Вместо това направете това (използвайки ГГГГ-ММ-ДДТЧЧ:ММ:СС), за да сте в безопасност, независимо от настройките за език/формат на дата.

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. ПОКАЗВАНЕ НА ВСИЧКИ данни за дати между две дати; ако не съществува ред за определена дата, покажете нула във всички колони

  2. Временно SQL поле за данни

  3. Поддръжка на Spotlight Cloud за съобщение за Azure SQL DB (предварителен преглед)

  4. Топ 9 съвета за настройка на вашия SQL сървърен клъстер

  5. Как да запишете и извлечете PictureBox изображение в Sql Server Database Varbinary(Max) колона VB.NET