Chaque datepart et ses abréviations retournent la même valeur.
La valeur de retour dépend de l'environnement de langage défini en utilisant SET LANGUAGE et par la langue par défaut de la connexion. Si date est un littéral de chaîne pour certains formats, la valeur de retour dépend du format spécifié en utilisant SET DATEFORMAT. SET DATEFORMAT n'affecte pas la valeur de retour lorsque la date est une expression de colonne d'un type de données de date ou d'heure.
Le tableau suivant répertorie tous les arguments datepart avec les valeurs de retour correspondantes pour l'instruction SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Le type de données de l'argument date est datetimeoffset(7). La valeur de retour nanoseconddatepart a une échelle de 9 (,123456700) et les deux dernières positions sont toujours 00.
|
datepart
|
Valeur de retour
|
|---|
|
year, yyyy, yy
|
2007
|
|
quarter, qq, q
|
4
|
|
month, mm, m
|
10
|
|
dayofyear, dy, y
|
303
|
|
day, dd, d
|
30
|
|
week, wk, ww
|
45
|
|
weekday, dw
|
1
|
|
hour, hh
|
12
|
|
minute, n
|
15
|
|
second, ss, s
|
32
|
|
millisecond, ms
|
123
|
|
microsecond, mcs
|
123456
|
|
nanosecond, ns
|
123456700
|
|
TZoffset, tz
|
310
|
Arguments des parties de date semaine et jour ouvrable
Lorsque datepart est week (wk, ww) ou weekday (dw), la valeur de retour dépend de la valeur qui est définie à l'aide de SET DATEFIRST.
Le 1er janvier d'une année définit le numéro de départ de week datepart, par exemple : DATEPART (wk, 'Jan 1, xxxx') = 1, où xxxx représente une année
Le tableau suivant répertorie la valeur de retour pour week et weekdaydatepart pour '2007-04-21 ' pour chaque argument SET DATEFIRST. Le 1er janvier est un dimanche dans l'année 2007. Le 21 avril est un samedi dans l'année 2007. SET DATEFIRST 7, Sunday, est la valeur par défaut pour l'anglais des États-Unis.
|
SET DATEFIRST
argument
|
week
retourné
|
weekday
retourné
|
|---|
|
1
|
16
|
6
|
|
2
|
17
|
5
|
|
3
|
17
|
4
|
|
4
|
17
|
3
|
|
5
|
17
|
2
|
|
6
|
17
|
1
|
|
7
|
16
|
7
|
Arguments des parties de date année, mois et jour
Les valeurs qui sont retournées pour DATEPART (year, date), DATEPART (month, date) et DATEPART (day, date) sont les mêmes que celles retournées par les fonctions YEAR, MONTHet DAY, respectivement.
Partie de date ISO_WEEK
ISO 8601 inclut le système semaine-date ISO, un système de numérotation pour les semaines. Chaque semaine est associée à l'année dans laquelle jeudi se produit. Par exemple, la semaine 1 de 2004 (2004W01) a eu lieu du lundi 29 décembre 2003 au dimanche 4 janvier 2004. Le numéro de semaine le plus élevé dans une année peut être 52 ou 53. Ce style de numérotation est utilisé en général dans les pays européens, plus rarement ailleurs.
Le système de numérotation des différents pays peut ne pas se conformer à la norme ISO. Il existe au moins six possibilités comme illustré dans le tableau suivant
|
Premier jour de la semaine
|
La première semaine de l'année contient
|
Semaines assignées deux fois
|
Utilisé par/dans
|
|---|
|
Dimanche
|
1 janvier,
Premier samedi,
1 à 7 jours de l'année
|
Oui
|
États-Unis
|
|
Lundi
|
1 janvier,
Premier dimanche,
1 à 7 jours de l'année
|
Oui
|
Majorité de l'Europe et Royaume-Uni
|
|
Lundi
|
4 janvier,
Premier jeudi,
4 à 7 jours de l'année
|
Non
|
ISO 8601, Norvège et Suède
|
|
Lundi
|
7 janvier,
Premier lundi,
7 jours de l'année
|
Non
|
|
|
Mercredi
|
1 janvier,
Premier mardi,
1 à 7 jours de l'année
|
Oui
|
|
|
Samedi
|
1 janvier,
Premier vendredi,
1 à 7 jours de l'année
|
Oui
|
|
TZoffset
TZoffset (tz) est retourné comme nombre de minutes (signé). L'instruction suivante retourne un décalage de fuseau horaire de 310 minutes.
SELECT DATEPART (TZoffset, 2007-05-10 00:00:01.1234567 +05:10);
Si l'argument datepart est de type TZoffset (tz) et que l'argument date n'est pas du type de données datetimeoffset, la valeur NULL est retournée.
Argument date smalldatetime
Lorsque date est de type smalldatetime, les secondes sont retournées sous la forme 00.
Valeur par défaut retournée pour une partie de date qui ne figure pas dans un argument date
Si le type de données de l'argument date n'a pas le datepartspécifié, la valeur par défaut pour ce datepart sera retournée.
Par exemple, la combinaison année-mois-jour par défaut pour tout type de données date est 1900-01-01. L'instruction suivante a des arguments de partie date pour datepart, un argument d'heure pour date et retourne 1900, 1, 1, 1, 2.
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(weekday, '12:10:30.123');
La combinaison heure-minute-seconde par défaut pour le type de données time est 00:00:00. L'instruction suivante a des arguments de partie d'heure pour datepart, un argument de date pour date et retourne 0, 0, 0.
SELECT DATEPART(hour, '2007-06-01')
,DATEPART(minute, '2007-06-01')
,DATEPART(second, '2007-06-01');
Fractions de seconde
Les fractions de seconde sont retournées comme illustré dans les instructions suivantes :
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700