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

DATETIME2FROMPARTS() Exemples dans SQL Server (T-SQL)

Dans SQL Server, le DATETIME2FROMPARTS() la fonction fonctionne de manière similaire à DATETIMEFROMPARTS() fonction, sauf qu'elle accepte 8 arguments et renvoie une datetime2 valeur. Le DATETIMEFROMPARTS() d'autre part, n'accepte que 7 arguments et renvoie une datetime valeur.

Fondamentalement, vous fournissez toutes les parties date/heure et cette fonction renverra un datetime2 valeur basée sur les pièces que vous fournissez.

Syntaxe

Tout d'abord, voici la syntaxe :

DATETIME2FROMPARTS ( year, month, day, hour, minute, seconds, fractions, precision )

Où chacun des 7 premiers arguments est une expression entière qui spécifie cette partie de la date. Par exemple, year est un entier qui spécifie la partie année de la date.

Le 8ème argument est une expression entière qui permet de définir la précision de la valeur de retour. Cette valeur spécifie l'échelle (c'est-à-dire le nombre de chiffres à droite de la décimale).

Exemple

Voici un exemple d'utilisation :

SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, 4 ) AS Result;

Résultat :

+--------------------------+
| Result                   |
|--------------------------|
| 2021-05-10 23:35:29.0500 |
+--------------------------+

Valeurs invalides

Tous les arguments doivent être des valeurs valides. Par exemple, vous ne pouvez pas spécifier un mois de 13 ou une valeur de minutes de 61.

Voici un exemple où je spécifie une valeur de mois de 13 :

SELECT DATETIME2FROMPARTS( 2021, 13, 10, 23, 35, 29, 500, 4 ) AS Result;

Résultat :

Cannot construct data type datetime2, some of the arguments have values which are not valid.

Nombre d'arguments

Vous devez également fournir le nombre correct d'arguments (8) :

SELECT DATETIME2FROMPARTS( 2021, 05, 10 ) AS Result;

Résultat :

The datetime2fromparts function requires 8 argument(s).

Valeurs nulles

Si vous fournissez une valeur nulle pour l'un des 7 premiers arguments, le résultat est NULL :

SELECT DATETIME2FROMPARTS( 2021, 05, 10, NULL, 35, 29, 500, 4 ) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| NULL     |
+----------+

Cependant, fournir une valeur nulle pour le 8ème argument (qui spécifie la précision/l'échelle) entraîne une erreur :

SELECT DATETIME2FROMPARTS( 2021, 05, 10, 23, 35, 29, 500, NULL ) AS Result;

Résultat :

Scale argument is not valid. Valid expressions for data type datetime2 scale argument are integer constants and integer constant expressions.