Time
n'est pas stocké avec son format d'affichage dans SQL Server.
Par conséquent, du point de vue de l'utilisateur, vous pouvez dire qu'il n'a pas de format.
Bien sûr, ce n'est pas tout à fait exact car il a un format de stockage , mais en tant qu'utilisateur moyen, vous ne pouvez pas vraiment l'utiliser.
Ceci est vrai pour tous les types de données de date et d'heure :Date
, DateTimeOffset
, DateTime2
, SmallDateTime
, DateTime
et Time
.
Si vous avez besoin d'un format, vous n'avez pas besoin de caster en time
mais à un char
. Utiliser Convert
pour obtenir le char
vous avez besoin :
SELECT CONVERT(char(10), [time], 108) as CSTTime
Voici quelques données de base si vous êtes intéressé :
Dans cet article publié en 2000, l'auteur explique en profondeur comment SQL Server traite les dates et les heures. Je doute que quelque chose de significatif ait changé entre 2000 et 2015 dans la façon dont SQL Server stocke date
, time
et datetime
valeurs en interne.
Voici les citations pertinentes, si vous ne voulez pas tout lire :
Alors, comment SQL Server stocke-t-il les dates en interne ? Il utilise 8 octets pour stocker une valeur datetime, les 4 premiers pour la date et les 4 seconds pour l'heure. SQL Server peut interpréter les deux ensembles de 4 octets comme des entiers.
........
........
SQL Server stocke le deuxième entier pour le temps comme le nombre de coups d'horloge après minuit. Une seconde contient 300 ticks, donc un tick équivaut à 3,3 millisecondes (ms).
depuis time
est en fait stocké sous la forme d'un entier de 4 octets, il n'a vraiment pas de format faisant partie intégrante du type de données.
Vous pouvez également consulter cet article pour une explication plus détaillée avec des exemples de code.