Maison >base de données >tutoriel mysql >Comment créer une valeur datetime à partir de composants jour, mois et année distincts dans T-SQL ?

Comment créer une valeur datetime à partir de composants jour, mois et année distincts dans T-SQL ?

Barbara Streisand
Barbara Streisandoriginal
2025-01-16 14:00:06576parcourir

How to Create a Datetime Value from Separate Day, Month, and Year Components in T-SQL?

Construction de valeurs DATETIME dans T-SQL à partir de parties de date individuelles

Dans les anciennes versions de SQL Server (comme SQL Server 2005), créer une valeur DATETIME directement à partir de composants jour, mois et année distincts peut être délicat et sujet à des erreurs. Ce guide présente plusieurs méthodes pour y parvenir de manière fiable.

Méthode 1 : Utiliser DATEADD pour la construction Datetime

Cette méthode exploite la fonction DATEADD pour construire le DATETIME étape par étape :

<code class="language-sql">DECLARE @DayOfMonth TINYINT; SET @DayOfMonth = 13;
DECLARE @Month TINYINT; SET @Month = 6;
DECLARE @Year INT; SET @Year = 2006;

SELECT DATEADD(day, @DayOfMonth - 1, 
              DATEADD(month, @Month - 1, 
                      DATEADD(year, @Year - 1900, 0)));</code>

La soustraction de 1 de @DayOfMonth et @Month explique le fait que DATEADD fonctionne avec des décalages par rapport à la date de base (1er janvier 1900).

Méthode 2 : DATEADD Syntaxe alternative

Une approche plus concise utilisant DATEADD est :

<code class="language-sql">SELECT DATEADD(yy, @Year - 1900,  
               DATEADD(m, @Month - 1, @DayOfMonth -1));</code>

On obtient le même résultat avec une disposition légèrement différente des DATEADD appels.

Méthode 3 : DATEFROMPARTS (SQL Server 2012 et versions ultérieures)

SQL Server 2012 et les versions ultérieures offrent la fonction DATEFROMPARTS pratique :

<code class="language-sql">SELECT DATEFROMPARTS(@Year, @Month, @DayOfMonth);</code>

Il s'agit de la méthode la plus simple si votre version de SQL Server la prend en charge.

Gérer les années bissextiles

Alors que DATEFROMPARTS gère automatiquement les années bissextiles, les méthodes DATEADD sont suffisamment robustes pour les gérer également correctement. Aucun ajustement particulier n'est nécessaire pour les années bissextiles dans les exemples fournis.

Choisissez la méthode la plus adaptée à votre version de SQL Server et à votre style de codage. DATEFROMPARTS est l'approche privilégiée pour sa simplicité et sa clarté si votre version de SQL Server le permet.

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