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

Převeďte datum ve formátu ISO na DATETIME

Problém je v tom, že váš řetězec není akceptovaný formát data a času serveru SQL Server. SQL Server rozpozná ISO8601 formát, což je:

yyyy-mm-ddThh:mi:ss.mmm

Což by bylo 2013-03-02T16:48:00 pro vaše datum výše.

Viz Styly data a času sekce.

Takže následující příkaz selže:

declare @date nvarchar(max) = '20130302T164800'

select convertedDate = cast(@date as datetime)

Pokud převedete řetězec na ISO8601 formátu, příkaz bude fungovat:

declare @date nvarchar(max) = '2013-03-02T16:48:00'

select convertedDate = cast(@date as datetime)

SQL Fiddle s ukázkou .

Formát můžete aktualizovat na jeden, který SQL Server rozpozná a přetypovat řetězec na datum a čas v jednom příkazu:

declare @date nvarchar(max) = '20130302T164800'

select cast(left(@date, 4)
  + '-' + substring(@date,5,2)
  + '-' + substring(@date,7,5)
  + ':' + substring(@date,12,2)
  + ':' + substring(@date,14,2) as datetime)

SQL Fiddle s ukázkou .

Toto je pouze příklad, můžete jej převést na jakýkoli formát rozpoznávaný serverem SQL, ale tím jej převedete na ISO8601 . V zásadě jej převeďte do jiného formátu, aby převod fungoval.




  1. Znaky UTF8 se v datatables a yadcf nezobrazují správně

  2. Nainstalujte rozšíření SQL Server Agent Extension v Azure Data Studio

  3. Více MYSQLi připravených příkazů

  4. Přidejte vygenerovaný sloupec do tabulky v SQLite