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

DATEPART() Exemples dans SQL Server

Dans SQL Server, le T-SQL DATEPART() la fonction renvoie un entier qui représente la partie de date spécifiée de la date spécifiée . Par exemple, vous pouvez transmettre 2021-01-07 et que SQL Server ne renvoie que la partie année (2021 ).

Vous pouvez également extraire la portion de temps. Par exemple, vous pouvez transmettre 2018-06-02 08:24:14.3112042 et que SQL Server ne renvoie que la partie heure (8 ).

Exemples ci-dessous.

Syntaxe

Tout d'abord, la syntaxe. Le DATEPART() la syntaxe ressemble à ceci :

DATEPART ( datepart , date )

datepart est la partie de date (une valeur de date ou d'heure) pour laquelle un entier sera renvoyé.

Exemple 1

Voici un exemple de base où je renvoie le composant année à partir d'une date.

SELECT DATEPART(year, '2021-01-07') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| 2021     |
+----------+

Exemple 2

Dans cet exemple, j'attribue une date à une variable, puis j'utilise plusieurs instances de DATEPART() pour récupérer différentes parties de cette date.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DATEPART(year, @date) AS Year,
    DATEPART(quarter, @date) AS Quarter,
    DATEPART(month, @date) AS Month,
    DATEPART(dayofyear, @date) AS 'Day of Year',
    DATEPART(day, @date) AS Day,
    DATEPART(week, @date) AS Week,
    DATEPART(weekday, @date) AS Weekday;

Résultat :

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | 6       | 153           | 2     | 22     | 7         |
+--------+-----------+---------+---------------+-------+--------+-----------+

Exemple 3

Vous pouvez également récupérer les différentes parties de l'heure à partir de la date.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DATEPART(hour, @date) AS Hour,
    DATEPART(minute, @date) AS Minute,
    DATEPART(second, @date) AS Second,
    DATEPART(millisecond, @date) AS Millsecond,
    DATEPART(microsecond, @date) AS Microsecond,
    DATEPART(nanosecond, @date) AS Nanosecond;

Résultat :

+--------+----------+----------+--------------+---------------+--------------+
| Hour   | Minute   | Second   | Millsecond   | Microsecond   | Nanosecond   |
|--------+----------+----------+--------------+---------------+--------------|
| 8      | 24       | 14       | 311          | 311204        | 311204200    |
+--------+----------+----------+--------------+---------------+--------------+

Exemple 4

Vous pouvez également récupérer le TZoffset et la ISO_WEEK partie de date.

Le TZoffset est renvoyé sous forme de nombre de minutes (signé). La ISO_WEEK datepart fait référence au système de date de semaine ISO (partie de la norme ISO 8601) qui est un système de numérotation des semaines.

DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';
SELECT 
    DATEPART(TZoffset, @date) AS 'Time Zone Offset',
    DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';

Résultat :

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| 480                | 22         |
+--------------------+------------+

Dans cet exemple, j'ai défini la date sur un datetimeoffset format, qui inclut le décalage horaire. Le TZoffset est renvoyé en minutes.

Une alternative rapide

T-SQL offre également un moyen plus concis de renvoyer les composants jour, mois ou année à partir d'une date avec le DAY() , MONTH() et YEAR() fonctions.

Ils fonctionnent comme ceci :

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DAY(@date) AS DAY,
    MONTH(@date) AS MONTH,
    YEAR(@date) AS YEAR;

Résultat :

+-------+---------+--------+
| DAY   | MONTH   | YEAR   |
|-------+---------+--------|
| 2     | 6       | 2018   |
+-------+---------+--------+

Obtenir le nom du mois ou le nom du jour

Si vous avez besoin d'obtenir le nom du mois ou le nom du jour, utilisez le DATENAME() fonction à la place. Cette fonction renvoie les résultats sous forme de chaîne de caractères et vous pouvez renvoyer le mois et le jour de la semaine par leur nom. Voici quelques DATENAME() exemples pour illustrer ce que je veux dire.