sql >> Databáze >  >> RDS >> Sqlserver

Chyba SQL:Převod datového typu varchar na datový typ datetime vedl k hodnotě mimo rozsah

Bezpečné formáty řetězce datetime pro použití v SQL Server jsou

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

Převod, který máte, se nezdaří, pokud NASTAVTE FORMÁT DATA je dmy. NASTAVIT JAZYK automaticky nastaví formát data za vás. Myslím, že oba german a norwegian použijte dmy.

Toto se nezdaří:

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)

Udělejte to takto (pomocí RRRR-MM-DDTHH:MM:SS), abyste byli v bezpečí bez ohledu na nastavení jazyka/formátu data.

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. Jak převést DateTime na číslo v MySQL?

  2. Průběh celkem... s obratem

  3. Je použití hlavní tabulky pro sdílené sloupce dobrým postupem pro celou databázi?

  4. Odstranit ze dvou tabulek v jednom dotazu