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

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

Le SYSDATETIME() la fonction renvoie la date et l'heure actuelles sous forme de datetime2(7) valeur. Cette valeur est dérivée du système d'exploitation de l'ordinateur sur lequel l'instance de SQL Server s'exécute.

Cet article fournit des exemples de SYSDATETIME() fonction, y compris comment vous pouvez l'utiliser avec d'autres fonctions pour renvoyer la valeur qui vous intéresse.

Syntaxe

Tout d'abord, voici la syntaxe :

SYSDATETIME ( )

Cette fonction n'accepte donc aucun argument. Vous l'appelez simplement sans aucun argument.

Exemple

Voici un exemple basique d'utilisation d'un SELECT instruction pour renvoyer la date et l'heure actuelles à partir de SYSDATETIME() :

SELECT SYSDATETIME() AS Result;

Résultat :

+-----------------------------+
| Result                      |
|-----------------------------|
| 2018-06-15 23:09:13.5852199 |
+-----------------------------+

Donc, comme mentionné, il renvoie un datetime2(7) valeur. Le datetime2 le type de données a une plage de dates plus étendue et une précision fractionnaire par défaut supérieure à la valeur datetime type de données (qui est le type de données que GETDATE() renvoie - voir SYSDATETIME() vs GETDATE() :Quelle est la différence ?).

Extraire une partie de la date

Si vous ne voulez qu'une partie de la valeur de retour, vous pouvez utiliser DATEPART() pour renvoyer uniquement la partie de la date/heure qui vous intéresse.

Exemple :

SELECT DATEPART(month, SYSDATETIME()) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 6        |
+----------+

Parfois, il existe plusieurs façons d'obtenir le même résultat dans SQL Server. Voici un autre exemple utilisant le MONTH() fonction :

SELECT MONTH(SYSDATETIME()) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 6        |
+----------+

Ces deux fonctions ont renvoyé le mois en cours. Mais ils les ont renvoyés sous la forme d'un entier représentant le numéro du mois.

Si vous voulez le mois nom renvoyé à la place, vous pouvez utiliser DATENAME() :

SELECT DATENAME(month, SYSDATETIME()) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| June     |
+----------+

Formater la date

Vous pouvez également utiliser d'autres fonctions T-SQL pour formater la date selon vos besoins.

Voici un exemple d'utilisation du FORMAT() fonction pour formater le résultat :

SELECT 
    FORMAT(SYSDATETIME(), 'd', 'en-US') AS 'd, en-US',
    FORMAT(SYSDATETIME(), 'd', 'en-gb') AS 'd, en-gb',
    FORMAT(SYSDATETIME(), 'D', 'en-US') AS 'D, en-US',
    FORMAT(SYSDATETIME(), 'D', 'en-gb') AS 'D, en-gb';

Résultat :

+------------+------------+-----------------------+--------------+
| d, en-US   | d, en-gb   | D, en-US              | D, en-gb     |
|------------+------------+-----------------------+--------------|
| 6/15/2018  | 15/06/2018 | Friday, June 15, 2018 | 15 June 2018 |
+------------+------------+-----------------------+--------------+

Plus d'exemples sur Comment formater la date et l'heure dans SQL Server.

Incrémenter la valeur et trouver la différence

Vous pouvez utiliser des fonctions comme DATEDIFF() pour retourner la différence entre la date actuelle et une autre date.

Voici un exemple d'utilisation de DATEADD() pour ajouter un mois à la date du jour, puis connaître la différence en jours :

DECLARE @date1 datetime2 = SYSDATETIME();
DECLARE @date2 datetime2 = DATEADD(month, 1, SYSDATETIME());
SELECT DATEDIFF(day, @date1, @date2) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 30       |
+----------+