- Catégories :
YEAR* / DAY* / WEEK* / MONTH / QUARTER¶
Extrait la partie de date correspondante d’une date ou d’un horodatage.
Ces fonctions sont des alternatives à l’utilisation de la fonction DATE_PART (ou EXTRACT) avec la partie de date équivalente (voir Parties de date et d’heure prises en charge).
- Voir aussi :
Syntaxe¶
YEAR( <date_or_timestamp_expr> )
YEAROFWEEK( <date_or_timestamp_expr> )
YEAROFWEEKISO( <date_or_timestamp_expr> )
DAY( <date_or_timestamp_expr> )
DAYOFMONTH( <date_or_timestamp_expr> )
DAYOFWEEK( <date_or_timestamp_expr> )
DAYOFWEEKISO( <date_or_timestamp_expr> )
DAYOFYEAR( <date_or_timestamp_expr> )
WEEK( <date_or_timestamp_expr> )
WEEKOFYEAR( <date_or_timestamp_expr> )
WEEKISO( <date_or_timestamp_expr> )
MONTH( <date_or_timestamp_expr> )
QUARTER( <date_or_timestamp_expr> )
Arguments¶
date_or_timestamp_expr
Une date, un horodatage ou une expression qui peut être évalué en tant que date ou horodatage.
Renvoie¶
La fonction renvoie une valeur de type NUMBER.
Notes sur l’utilisation¶
Nom de la fonction |
Partie de la date extraite de la date d’entrée ou de l’horodatage |
Valeurs possibles |
---|---|---|
YEAR |
Année |
Toute année valide (par exemple, 2025) |
YEAROFWEEK [1] |
Année à laquelle la semaine extraite appartient |
Toute année valide (par exemple, 2025) |
YEAROFWEEKISO |
Année à laquelle appartient la semaine extraite en utilisant la sémantique ISO |
Toute année valide (par exemple, 2025) |
DAY , DAYOFMONTH |
Jour (numéro) du mois |
1 à 31 |
DAYOFWEEK [1] |
Jour (numéro) de la semaine |
0 à 7 |
DAYOFWEEKISO |
Jour (numéro) de la semaine en utilisant la sémantique ISO |
1 à 7 |
DAYOFYEAR |
Jour (numéro) de l’année |
1 à 366 |
WEEK , WEEKOFYEAR [1] |
Semaine (numéro) de l’année |
1 à 54 |
WEEKISO |
Semaine (numéro) de l’année en utilisant la sémantique ISO |
1 à 53 |
MONTH |
Mois (numéro) de l’année |
1 à 12 |
QUARTER |
Trimestre (numéro) de l’année |
1 à 4 |
[1] Résultats dictés par les valeurs définies pour les paramètres de session WEEK_OF_YEAR_POLICY et/ou WEEK_START.
Pour plus de détails sur la sémantique ISO et le paramètre, voir Semaines civiles et jours de semaine.
Exemples¶
L’exemple suivant illustre l’utilisation des fonctions YEAR, QUARTER, MONTH, DAY, DAYOFWEEK et DAYOFYEAR :
SELECT '2025-04-11T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
YEAR(tstamp) AS "YEAR",
QUARTER(tstamp) AS "QUARTER OF YEAR",
MONTH(tstamp) AS "MONTH",
DAY(tstamp) AS "DAY",
DAYOFMONTH(tstamp) AS "DAY OF MONTH",
DAYOFYEAR(tstamp) AS "DAY OF YEAR";
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
| TSTAMP | YEAR | QUARTER OF YEAR | MONTH | DAY | DAY OF MONTH | DAY OF YEAR |
|-------------------------+------+-----------------+-------+-----+--------------+-------------|
| 2025-04-11 23:39:20.123 | 2025 | 2 | 4 | 11 | 11 | 101 |
+-------------------------+------+-----------------+-------+-----+--------------+-------------+
L’exemple suivant illustre l’utilisation des fonctions WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK et YEAROFWEEKISO. Le paramètre de session WEEK_OF_YEAR_POLICY est défini sur 1
, pour indiquer que la première semaine de l’année est la semaine contenant le 1er janvier de cette année.
ALTER SESSION SET WEEK_OF_YEAR_POLICY = 1;
SELECT '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
WEEK(tstamp) AS "WEEK",
WEEKISO(tstamp) AS "WEEK ISO",
WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO";
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 | 1 | 53 | 1 | 2016 | 2015 |
+-------------------------+------+----------+--------------+--------------+------------------+
L’exemple suivant illustre également l’utilisation des fonctions WEEK, WEEKISO, WEEKOFYEAR, YEAROFWEEK et YEAROFWEEKISO. Le paramètre de session WEEK_OF_YEAR_POLICY est défini pour indiquer que la première semaine de l’année est la première semaine de l’année qui contient au moins quatre jours de cette année. Dans cet exemple, la semaine du 27 décembre 2015 au 2 janvier 2016 est considérée comme la dernière semaine de 2015 et non comme la première semaine de 2016. Même si la semaine contient le vendredi 1er janvier 2016, moins de la moitié de la semaine est en 2016.
ALTER SESSION SET WEEK_OF_YEAR_POLICY = 0;
SELECT '2016-01-02T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
WEEK(tstamp) AS "WEEK",
WEEKISO(tstamp) AS "WEEK ISO",
WEEKOFYEAR(tstamp) AS "WEEK OF YEAR",
YEAROFWEEK(tstamp) AS "YEAR OF WEEK",
YEAROFWEEKISO(tstamp) AS "YEAR OF WEEK ISO";
+-------------------------+------+----------+--------------+--------------+------------------+
| TSTAMP | WEEK | WEEK ISO | WEEK OF YEAR | YEAR OF WEEK | YEAR OF WEEK ISO |
|-------------------------+------+----------+--------------+--------------+------------------|
| 2016-01-02 23:39:20.123 | 53 | 53 | 53 | 2015 | 2015 |
+-------------------------+------+----------+--------------+--------------+------------------+
L’exemple suivant illustre l’utilisation des fonctions DAYOFWEEK et DAYOFWEEKISO. Le paramètre de session WEEK_START est défini pour indiquer que la semaine commence le dimanche.
ALTER SESSION SET WEEK_START = 7;
L’horodatage de la requête suivante est celui du 5 avril 2025, qui était un samedi. La fonction DAYOFWEEK renvoie 7
pour le samedi, car le premier jour de la semaine est fixé au dimanche. La fonction DAYOFWEEKISO renvoie 6
car le premier jour de la semaine selon la sémantique ISO est lundi. Pour plus d’informations sur la sémantique ISO et le paramètre WEEK_START, voir Semaines civiles et jours de semaine.
SELECT '2025-04-05T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
DAYOFWEEK(tstamp) AS "DAY OF WEEK",
DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO";
+-------------------------+-------------+-----------------+
| TSTAMP | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2025-04-05 23:39:20.123 | 7 | 6 |
+-------------------------+-------------+-----------------+
L’exemple suivant démontre également l’utilisation des fonctions DAYOFWEEK et DAYOFWEEKISO. Le paramètre de session WEEK_START est défini pour indiquer que la semaine commence le lundi.
ALTER SESSION SET WEEK_START = 1;
SELECT '2025-04-05T23:39:20.123-07:00'::TIMESTAMP AS tstamp,
DAYOFWEEK(tstamp) AS "DAY OF WEEK",
DAYOFWEEKISO(tstamp) AS "DAY OF WEEK ISO";
+-------------------------+-------------+-----------------+
| TSTAMP | DAY OF WEEK | DAY OF WEEK ISO |
|-------------------------+-------------+-----------------|
| 2025-04-05 23:39:20.123 | 6 | 6 |
+-------------------------+-------------+-----------------+
Pour plus d’exemples, voir Utilisation des valeurs de date et d’heure.
Pour des exemples plus détaillés des fonctions liées à la semaine (DAYOFWEEK, WEEK, WEEKOFYEAR, YEAROFWEEK, etc.), voir Semaines civiles et jours de semaine.