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

Jak přenést datum a čas na čas

Time není uložen se svým formátem zobrazení v SQL Server.
Proto z uživatelského hlediska můžete říci, že nemá žádný formát.
To samozřejmě není úplně přesné, protože má formát úložiště , ale jako průměrný uživatel to ve skutečnosti nemůžete použít.
To platí pro všechny typy dat a času:
Date , DateTimeOffset , DateTime2 , SmallDateTime , DateTime a Time .

Pokud potřebujete formát, nemusíte přenášet do time ale na char . Použijte Convert získat char potřebujete:

SELECT CONVERT(char(10), [time], 108) as CSTTime 

Zde jsou některá data na pozadí, pokud vás to zajímá:

V tomto článku publikovaném v roce 2000 autor podrobně vysvětluje, jak SQL Server zachází s daty a časy. Pochybuji, že se mezi lety 2000 a 2015 něco významného změnilo ve způsobu, jakým SQL Server ukládá date , time a datetime hodnot interně.

Zde jsou relevantní citace, pokud je nechcete číst celé:

Jak tedy SQL Server interně ukládá data? K uložení hodnoty data a času používá 8 bajtů – první 4 pro datum a druhé 4 pro čas. SQL Server dokáže interpretovat obě sady 4 bajtů jako celá čísla.
........
........
SQL Server ukládá druhé celé číslo po dobu jako počet tikání hodin po půlnoci. Sekunda obsahuje 300 tiků, takže jeden tik se rovná 3,3 milisekundám (ms).

od time je ve skutečnosti uloženo jako 4bajtové celé číslo, ve skutečnosti nemá formát jako integrální součást datového typu.

Můžete si také přečíst tento článek, kde najdete podrobnější vysvětlení s ukázkami kódu.



  1. Aktualizace pole JSON nepřetrvávají v databázi

  2. Který datový typ .NET je nejlepší pro mapování NUMBER datového typu Oracle v NHibernate?

  3. Pořadí provádění podmínek v klauzuli SQL 'where'

  4. Povolení dvoufaktorové autentizace pro ScaleGrid DBaaS