Time
wordt niet opgeslagen met zijn weergaveformaat in SQL Server.
Daarom kun je vanuit het gebruikersperspectief zeggen dat het geen formaat heeft.
Natuurlijk is dat niet helemaal juist, aangezien het wel een opslagformaat heeft , maar als gemiddelde gebruiker kun je het niet echt gebruiken.
Dit geldt voor alle gegevenstypen voor datum en tijd:Date
, DateTimeOffset
, DateTime2
, SmallDateTime
, DateTime
en Time
.
Als je een indeling nodig hebt, hoef je niet te casten naar time
maar naar een char
. Gebruik Convert
om de char
. te krijgen je hebt nodig:
SELECT CONVERT(char(10), [time], 108) as CSTTime
Hier zijn wat achtergrondgegevens als je geïnteresseerd bent:
In dit in 2000 gepubliceerde artikel legt de schrijver uitgebreid uit hoe SQL Server met datums en tijden omgaat. Ik betwijfel of er iets belangrijks is veranderd tussen 2000 en 2015 in de manier waarop SQL Server date
opslaat , time
en datetime
waarden intern.
Hier zijn de relevante citaten, als u niet alles wilt lezen:
Dus hoe slaat SQL Server de datums intern op? Het gebruikt 8 bytes om een datetime-waarde op te slaan:de eerste 4 voor de datum en de tweede 4 voor de tijd. SQL Server kan beide sets van 4 bytes interpreteren als gehele getallen.
........
........
SQL Server slaat het tweede gehele getal voor de tijd op als het aantal kloktikken na middernacht. Een seconde bevat 300 ticks, dus een tick is gelijk aan 3,3 milliseconden (ms).
sinds time
wordt eigenlijk opgeslagen als een geheel getal van 4 bytes, het heeft echt geen formaat als integraal onderdeel van het gegevenstype.
Misschien wil je dit artikel ook lezen voor een meer gedetailleerde uitleg met codevoorbeelden.