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

Sådan castes DateTime til Time

Time er ikke gemt med dets visningsformat i SQL Server.
Derfor kan man fra brugerperspektivet sige, at den ikke har noget format.
Det er selvfølgelig ikke helt nøjagtigt, da det har et lagerformat , men som en gennemsnitlig bruger kan du ikke rigtig bruge det.
Dette gælder for alle datatyper for dato og klokkeslæt:
Date , DateTimeOffset , DateTime2 , SmallDateTime , DateTime og Time .

Hvis du har brug for et format, behøver du ikke caste til time men til en char . Brug Convert for at få char du har brug for:

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

Her er nogle baggrundsdata, hvis du er interesseret:

I denne artikel udgivet i 2000 forklarer forfatteren i dybden, hvordan SQL Server behandler datoer og tidspunkter. Jeg tvivler på, om noget væsentligt ændrede sig mellem 2000 og 2015 i den måde, SQL Server gemmer date på , time og datetime værdier internt.

Her er de relevante citater, hvis du ikke vil læse det hele:

Så hvordan gemmer SQL Server internt datoerne? Den bruger 8 bytes til at gemme en datetime-værdi - de første 4 for datoen og de andre 4 for tiden. SQL Server kan fortolke begge sæt af 4 bytes som heltal.
........
........
SQL Server gemmer det andet heltal for tiden som antallet af uret tikker efter midnat. En anden indeholder 300 kryds, så et kryds er lig med 3,3 millisekunder (ms).

siden time er faktisk gemt som et 4 byte heltal, har det virkelig ikke et format som en integreret del af datatypen.

Du vil måske også tjekke denne artikel for en mere detaljeret forklaring med kodeeksempler.



  1. MySQL COT() Funktion – Returner cotangensen af ​​et tal i MySQL

  2. Opret forbindelse til ekstern PostgreSql-database ved hjælp af Powershell

  3. Brug af underforespørgsel i en Check-erklæring i Oracle

  4. Få det aktuelle login-id i SQL Server (T-SQL)