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

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

Dans SQL Server, vous pouvez utiliser le DAY() fonction pour renvoyer la partie "jour" d'une date. Cette fonction renvoie un entier qui représente le jour du mois (pas le jour de la semaine).

Vous trouverez ci-dessous des exemples d'utilisation de cette fonction.

Syntaxe

La syntaxe ressemble à ceci :

DAY ( date )

date est une expression qui se résout en l'un des types de données suivants :

  • date
  • dateheure
  • datetimeoffset
  • datetime2
  • petite date/heure
  • temps

Il peut s'agir d'une expression de colonne, d'une expression, d'un littéral de chaîne ou d'une variable définie par l'utilisateur.

Exemple

Voici un exemple basique de son fonctionnement :

SELECT 
   SYSDATETIME() AS 'Date',
   DAY(SYSDATETIME()) AS 'Day';

Résultat :

+-----------------------------+-------+
| Date                        | Day   |
|-----------------------------+-------|
| 2018-06-18 00:20:22.1284540 | 18    |
+-----------------------------+-------+

Donc le DAY() la fonction a pu extraire le jour de la datetime2 valeur (qui a été retournée par le SYSDATETIME() fonction).

Date fournie sous forme de littéral de chaîne

Voici un exemple où la date est fournie sous forme de littéral de chaîne.

SELECT DAY('2019-01-07') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 7        |
+----------+

Et voici un exemple où la date est fournie dans un format différent :

SELECT DAY('07/01/2017') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 1        |
+----------+

Cependant, il est généralement préférable d'éviter d'utiliser des dates dans de tels formats. Si vous devez le faire, vous devrez tenir compte des paramètres de langue et/ou des paramètres de format de date de la session en cours.

Paramètres de langue

La sortie de l'exemple précédent dépendra des paramètres de langue et/ou des paramètres de format de date de la session en cours.

Lorsque nous définissons la langue, le format de date est implicitement défini en même temps.

Voici ce qui se passe lorsque nous fournissons le même argument de date dans deux environnements linguistiques différents.

britannique

SET LANGUAGE British;
SELECT DAY('07/01/2017') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 7        |
+----------+

us_English

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 1        |
+----------+

Paramètres de format de date

Les paramètres de format de date peuvent remplacer les paramètres de langue, vous devez donc également être conscient de ce paramètre. Par exemple, nous pourrions utiliser us_English pour notre langue (qui a un format de date par défaut de mdy ), mais nous pourrions remplacer le format de date par dmy .

Voici un exemple :

us_English - Format de date par défaut

Ici, nous définissons la langue sur us_English , qui définit implicitement le format de date sur myy .

SET LANGUAGE us_English;
SELECT DAY('07/01/2017') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 1        |
+----------+

us_English – Remplacer le format de date

Ici, nous définissons la langue sur us_English (qui définit implicitement le format de date), mais ensuite nous définissons explicitement le format de date sur dmy . Cela remplace le format de date implicitement défini lorsque nous avons défini la langue.

SET LANGUAGE us_English;
SET DATEFORMAT dmy;
SELECT DAY('07/01/2017') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 7        |
+----------+

Renvoyer le nom du jour

Si vous devez renvoyer le nom du jour (par opposition au numéro du jour), consultez 3 façons d'obtenir le nom du jour à partir d'une date dans SQL Server.