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

Modifier le format de date par défaut stocké dans une base de données

C'est le nœud de la confusion. Juste parce que SQL Server Management Studio affiche une colonne datetime dans ce format ne signifie pas qu'elle est stockée AS TEXT YYYY-MM-DD hh:mm:ss.zzz. Il est stocké en binaire, quelque chose comme 0000101000001010..

Vos dates sont stockées dans SQL Server sous la forme d'une série d'octets (en réalité des bits) qui constituent une valeur numérique décalée par rapport à 1900-01-01. Il n'y a pas de format inhérent aux dates. Ce à quoi vous faites référence est que SSMS affiche par défaut les colonnes datetime [display] sous la forme AAAA-MM-JJ hh:mm:ss.zzz. Si vous utilisez un outil de programmation frontal, cela peut également imposer un format [d'affichage] par défaut, sauf si vous en avez demandé un autre.

Il n'y a absolument AUCUN moyen de faire en sorte que SSMS affiche les données datetime dans un autre format via les options ou la configuration. Si vous le devez, vous devrez mettre à jour la requête SQL pour convertir la colonne datetime en une colonne VARCHAR contenant l'équivalent TEXTual dans un format particulier. Cela peut être utile dans SSMS, mais serait mauvais lorsqu'il est utilisé comme source de données pour les applications Web/GUI frontales - car les valeurs ne sont pas datetime et ne peuvent pas être utilisées pour le calcul d'intervalle, les graphiques, les contrôles liés à la date, etc.

Voir cet exemple d'affichage de l'heure (getdate()) au format AAAA-JJ-MM, un format très inhabituel. Notez que le champ/variable de date doit être utilisé deux fois :

select stuff(convert(char(7), getdate(), 120), 5, 0, '-' + convert(char(2), getdate(), 3))