Maison >base de données >tutoriel mysql >Comment puis-je combiner des colonnes de date et d'heure distinctes en une seule colonne DateTime dans MS SQL Server ?

Comment puis-je combiner des colonnes de date et d'heure distinctes en une seule colonne DateTime dans MS SQL Server ?

Linda Hamilton
Linda Hamiltonoriginal
2025-01-17 17:22:10563parcourir

How Can I Combine Separate Date and Time Columns into a Single DateTime Column in MS SQL Server?

Fusionner les colonnes de date et d'heure dans MS SQL Server : un guide complet

De nombreuses conceptions de bases de données stockent les informations de date et d’heure sur deux colonnes distinctes. Ce guide explique comment les combiner efficacement en une seule datetime colonne dans MS SQL Server.

La solution

En supposant que votre colonne « Date » contient uniquement des valeurs de date (la partie heure est nulle) et que votre colonne « Heure » ​​ne contient que des valeurs temporelles (la partie date est le 1er janvier 1900), une simple opération d'addition fonctionne étonnamment :

<code class="language-sql">SELECT CombinedDateTime = MyDate + MyTime FROM MyTable;</code>

Comprendre le mécanisme

Cet ajout apparemment simple exploite la représentation interne des datetime valeurs dans les anciennes versions de SQL Server. Chaque valeur datetime est stockée sous forme de deux entiers de 4 octets : un pour la date et un pour l'heure. Leur ajout effectue une combinaison au niveau du bit, ce qui donne une seule datetime valeur.

Gestion des versions et des types de données de SQL Server les plus récents

Pour SQL Server 2008 et versions ultérieures, les types de données DATE et TIME ont été introduits, aux côtés de DATETIME et DATETIME2. L'ajout direct ne s'applique plus. Pour combiner DATE et TIME dans ces versions plus récentes, un casting explicite vers DATETIME est crucial :

<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>

De plus, l'ajout direct de valeurs datetime2 peut entraîner une perte de précision. Pour garantir l'exactitude, convertissez en DATETIME avant de combiner :

<code class="language-sql">SELECT CombinedDateTime = CAST(MyDate AS DATETIME) + CAST(MyTime AS DATETIME) FROM MyTable;</code>

Cette approche garantit une combinaison précise et fiable de vos composants date et heure dans une seule datetime colonne, quelle que soit votre version de SQL Server.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn