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

DATENAME() Exemples dans SQL Server

Dans SQL Server, le T-SQL DATENAME() la fonction renvoie une chaîne de caractères 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 mois (January ).

Le type de retour pour DATENAME() est nvarchar .

Exemples ci-dessous.

Syntaxe

Le DATENAME() la syntaxe ressemble à ceci :

DATENAME ( datepart , date )

datepart est la partie de date (une valeur de date ou d'heure) pour laquelle une chaîne de caractères sera renvoyée.

Exemple 1

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

SELECT DATENAME(month, '2021-01-07') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| January  |
+----------+

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 
    DATENAME(year, @date) AS Year,
    DATENAME(quarter, @date) AS Quarter,
    DATENAME(month, @date) AS Month,
    DATENAME(dayofyear, @date) AS 'Day of Year',
    DATENAME(day, @date) AS Day,
    DATENAME(week, @date) AS Week,
    DATENAME(weekday, @date) AS Weekday;

Résultat :

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | June    | 153           | 2     | 22     | Saturday  |
+--------+-----------+---------+---------------+-------+--------+-----------+

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 
    DATENAME(hour, @date) AS Hour,
    DATENAME(minute, @date) AS Minute,
    DATENAME(second, @date) AS Second,
    DATENAME(millisecond, @date) AS Millsecond,
    DATENAME(microsecond, @date) AS Microsecond,
    DATENAME(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 
    DATENAME(TZoffset, @date) AS 'Time Zone Offset',
    DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';

Résultat :

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| +08:00             | 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.

Les résultats de DATENAME() ressemblera souvent aux résultats de DATEPART() (car la plupart des parties de date sont numériques). Cependant, DATEPART() renvoie un entier par opposition à une chaîne de caractères. Donc DATEPART() renverra les mois (et le composant du jour de la semaine) sous forme numérique (par exemple, 1 au lieu de January ).

Obtenir le nom court du mois

Si vous avez besoin du nom du mois, mais sous sa forme abrégée à 3 lettres (par exemple, Jan au lieu de January ), consultez mon article 5 façons d'obtenir le nom court du mois à partir d'une date dans SQL Server.