sql >> Database teknologi >  >> RDS >> Sqlserver

SQL-fejl:Konverteringen af ​​en varchar-datatype til en datetime-datatype resulterede i en værdi uden for området

De sikre datetime-strengformater, der skal bruges i SQL Server, er

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

Den konvertering, du har, vil mislykkes, hvis INDSTILL DATODEFORMAT er dmy. INDSTIL SPROG vil automatisk indstille datoformatet for dig. Jeg tror både german og norwegian brug dmy.

Dette vil mislykkes:

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)

Gør som dette i stedet for (brug ÅÅÅÅ-MM-DDTHH:MM:SS) for at være sikker uanset sprog-/datoformatindstillinger.

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. ved at bruge underforespørgsel i stedet for tabelnavnet

  2. Hvordan påvirker {} en MySQL-forespørgsel i PHP?

  3. Sådan bruges LIKE i SQL

  4. Databasetabeller, flere jo bedre?