- 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> )
Notes sur l’utilisation¶
Nom de la fonction |
Partie de date extraite de la date d’entrée/horodatage |
Valeurs possibles |
---|---|---|
YEAR |
Année |
Toute année valide (par ex. 2017) |
YEAROFWEEK [1] |
Année à laquelle la semaine extraite appartient |
Toute année valide (par ex. 2017) |
YEAROFWEEKISO |
Identique à YEAROFWEEK, sauf que la sémantique ISO est utilisée |
Toute année valide (par ex. 2017) |
DAY , DAYOFMONTH |
Jour (numéro) du mois |
1 à 31 |
DAYOFWEEK [1] |
Jour (numéro) de la semaine |
0 à 7 |
DAYOFWEEKISO |
Identique à DAYOFWEEK, sauf que la sémantique ISO est utilisée |
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 |
Identique à WEEK, sauf que la sémantique ISO est utilisée |
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¶
Ce qui suit illustre l’utilisation des fonctions YEAR
, MONTH
, DAY
, DAYOFWEEK
, DAYOFYEAR
et QUARTER
:
SELECT '2013-05-08T23: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 | |-------------------------+------+-----------------+-------+-----+--------------+-------------| | 2013-05-08 23:39:20.123 | 2013 | 2 | 5 | 8 | 8 | 128 | +-------------------------+------+-----------------+-------+-----+--------------+-------------+
Ce qui suit illustre 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 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 | +-------------------------+------+----------+--------------+--------------+------------------+
Ce qui suit 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 4 jours de cette année. (Ainsi, par exemple, la semaine du 26 décembre 2010 au 1er janvier 2011 est considérée comme la dernière semaine de 2010 et non la première semaine de 2011, car même si elle contient le 1er janvier 2011, moins de la moitié de la semaine est en 2011.)
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 | +-------------------------+------+----------+--------------+--------------+------------------+
Ce qui suit 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;SELECT '2016-01-02T23: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 | |-------------------------+-------------+-----------------| | 2016-01-02 23:39:20.123 | 7 | 6 | +-------------------------+-------------+-----------------+
Ce qui suit 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 lundi.
ALTER SESSION SET WEEK_START = 0;SELECT '2016-01-02T23: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 | |-------------------------+-------------+-----------------| | 2016-01-02 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.