Formats de date et d’heure SQL Server : Un guide complet

Introduction
Travailler avec des valeurs de date et d’heure fait partie intégrante du développement de bases de données. Que vous filtriez des lignes, créiez des rapports ou présentiez des horodatages, un formatage cohérent aide à garantir la clarté. Cet article explique comment formater et manipuler les dates dans SQL Server à l’aide des outils et fonctions intégrés.
Comprendre comment utiliser les fonctions datetime de SQL Server améliore la précision des rapports, assure un formatage régional correct et simplifie la logique applicative en aval. Dans les sections suivantes, nous explorerons les principaux types de données, les options de formatage et les meilleures pratiques pour la gestion des dates et heures dans SQL Server.
Aperçu de la conformité des données | Cadres réglementaires
Gestion des fuseaux horaires et aide-mémoire rapide des codes de style
Conversion instantanée avec AT TIME ZONE
À partir de SQL Server 2016, AT TIME ZONE simplifie la conversion des horodatages UTC en heures locales (et inversement) sans avoir à coder en dur les décalages ni à se débattre avec les changements d’heure d’été.
-- Stocker une fois en UTC, présenter en local
DECLARE @utc DATETIME2 = SYSUTCDATETIME();
SELECT
@utc AS StoredUTC,
@utc AT TIME ZONE 'UTC'
AT TIME ZONE 'Central European Standard Time' AS BerlinTime,
@utc AT TIME ZONE 'UTC'
AT TIME ZONE 'Pacific Standard Time' AS SeattleTime;
Codes de style CONVERT les plus utilisés
| Style | Exemple de sortie | Utilisation typique |
|---|---|---|
| 101 | 07/15/2025 | US MM/JJ/AAAA |
| 103 | 15/07/2025 | UE JJ/MM/AAAA |
| 104 | 15.07.2025 | DE JJ.MM.AAAA |
| 120 | 2025-07-15 13:25:42 | ISO 24 heures |
| 121 | 2025-07-15 13:25:42.347 | ISO précision ms |
Utilisez les styles ISO (120/121) pour les API, réservez les formats spécifiques à la région pour les couches de présentation, et stockez toujours en UTC lorsque les enregistrements voyagent entre les régions.
Qu’est-ce que SQL Server ?
Microsoft SQL Server est une plateforme de bases de données relationnelles largement utilisée dans les environnements d’entreprise. Il prend en charge les charges transactionnelles et analytiques, offrant de solides capacités pour la gestion des données structurées — y compris des outils intégrés pour le stockage, le formatage et les calculs sur les dates et heures.
Types de données de date et d’heure SQL Server
SQL Server propose plusieurs types intégrés pour stocker et manipuler les valeurs de dates et d’heures. Certains sont compatibles avec les versions antérieures, tandis que d’autres offrent une précision moderne et une prise en charge des fuseaux horaires. Le choix du type approprié dépend du niveau de précision et de l’efficacité de stockage requis.
| Type | Catégorie | Cas d’utilisation |
|---|---|---|
| datetime | Héritage | Stockage général avec précision à la milliseconde |
| smalldatetime | Héritage | Stockage compact, précis à la minute |
| date | Moderne | Stocke uniquement la date (sans composant horaire) |
| time | Moderne | Stocke uniquement l’heure, idéal pour la planification |
| datetime2 | Moderne | Date et heure de haute précision avec une plage étendue |
| datetimeoffset | Moderne | Inclut la gestion des fuseaux horaires |
Format de sortie par défaut
Par défaut, une requête telle que SELECT GETDATE(); renvoie un résultat au format 'YYYY-MM-DD HH:MI:SS.mmm'. Par exemple:
2024-07-15 13:25:42.347
Pour personnaliser le format, utilisez les fonctions CONVERT() ou FORMAT() avec des codes de style.
Formatage des dates dans SQL Server
Transformer des valeurs de dates et d’heures en chaînes lisibles est essentiel pour les rapports ou l’affichage dans l’interface utilisateur. La fonction CONVERT() accepte des codes de style pour divers formats spécifiques aux régions.
DECLARE @date DATETIME = GETDATE(); SELECT CONVERT(VARCHAR, @date, 101) AS US_Format, -- MM/JJ/AAAA CONVERT(VARCHAR, @date, 103) AS UK_Format, -- JJ/MM/AAAA CONVERT(VARCHAR, @date, 120) AS ISO_Format; -- AAAA-MM-JJ HH:MI:SS
Travailler avec les chaînes et les dates
Lorsque l’entrée est reçue sous forme de chaîne, vous pouvez la convertir en utilisant les fonctions CONVERT() ou CAST(). Cela facilite l’intégration dans les pipelines et le SQL dynamique.
DECLARE @str VARCHAR(20) = '2024-07-12 14:30:00'; SELECT CONVERT(DATETIME, @str) AS ConvertedDate;
Lorsque la précision est importante, utilisez datetime2 ou datetimeoffset pour une plage étendue et des fonctionnalités de fuseau horaire.
Arithmétique des dates
L’ajout ou la soustraction d’intervalles de temps peut être géré à l’aide de DATEADD(). Cela facilite le calcul des dates d’expiration, des délais ou des périodes de rapport.
DECLARE @start DATETIME = '2024-07-12'; SELECT DATEADD(DAY, 5, @start) AS PlusCinqJours, DATEADD(MONTH, 1, @start) AS MoisSuivant;
Extraction des parties de la date
Besoin d’une partie spécifique d’une date et d’une heure ? SQL Server offre des fonctions directes pour extraire l’année, le mois, le jour de la semaine et bien plus encore.
SELECT YEAR(GETDATE()) AS Annee, MONTH(GETDATE()) AS Mois, DAY(GETDATE()) AS Jour, DATEPART(WEEKDAY, GETDATE()) AS JourSemaine;
Meilleures pratiques pour les dates et heures SQL Server
- Utilisez le type de date et d’heure le plus petit répondant à vos besoins. Par exemple, utilisez
datesi l’heure est sans importance. - Utilisez des chaînes formatées en ISO lors de l’import/export pour éviter toute ambiguïté.
- Référez-vous aux codes de style Microsoft officiels pour une cohérence du formatage.
- Soyez conscient des paramètres régionaux et de langue du serveur — ils peuvent modifier l’analyse des entrées et l’ordre jour-mois.
Gestion des fuseaux horaires
La prise en charge des fuseaux horaires est essentielle pour les applications globales. Le type datetimeoffset de SQL Server aide à garantir la cohérence lors du stockage en UTC et de la conversion en zones locales.
DECLARE @utc DATETIMEOFFSET = '2024-07-12 12:00:00 +00:00'; DECLARE @cet DATETIMEOFFSET = '2024-07-12 14:00:00 +02:00'; SELECT DATEDIFF(HOUR, @utc, @cet) AS DifférenceHeures;
Résumé et Conclusion
La gestion et le formatage des valeurs de date et d’heure dans SQL Server ne doivent pas être complexes. En comprenant les bons types de données et en appliquant judicieusement les fonctions de conversion, vous pouvez garantir que vos applications présentent les informations temporelles de manière claire et cohérente.
Que vous créiez des rapports, analysiez des chaînes ou implémentiez une logique métier sensible au temps, maîtriser les dates et heures SQL Server vous donne un contrôle précis sur les données temporelles. Utilisez les fonctions intégrées, respectez les normes de formatage et exploitez la prise en charge des fuseaux horaires pour réduire les bugs et améliorer la confiance des utilisateurs.
