Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

SQL-Fehler:Die Konvertierung eines varchar-Datentyps in einen datetime-Datentyp führte zu einem außerhalb des zulässigen Bereichs liegenden Wert

Das in SQL Server zu verwendende sichere datetime-Zeichenfolgenformat ist

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

Ihre Konvertierung schlägt fehl, wenn DATEFORMAT SETZEN ist dmy. SPRACHE EINSTELLEN wird das Datumsformat automatisch für Sie festlegen. Ich denke beides german und norwegian Verwenden Sie dmy.

Dies wird fehlschlagen:

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)

Gehen Sie stattdessen so vor (mit JJJJ-MM-TTTHH:MM:SS), um sicherzugehen, unabhängig von den Sprach-/Datumsformateinstellungen.

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)