sql >> Base de Datos >  >> RDS >> Sqlserver

Error de SQL:la conversión de un tipo de datos varchar a un tipo de datos de fecha y hora resultó en un valor fuera de rango

Los formatos de cadena de fecha y hora seguros para usar en SQL Server son

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

La conversión que tiene fallará si SET DATEFORMAT es dmy. ESTABLECER IDIOMA establecerá automáticamente el formato de fecha para usted. Creo que ambos german y norwegian usa dmy.

Esto fallará:

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)

En su lugar, haga lo siguiente (usando AAAA-MM-DDTHH:MM:SS) para estar seguro, independientemente de la configuración de idioma/formato de fecha.

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)