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 )
Où 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.