Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment convertir le DateTime en Time

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.