Catégories :

Fonctions de date et d’heure

EXTRACT

Extracts the specified date or time part from a date, interval, time, or timestamp.

Astuce

Pour extraire la date d’un horodatage, utilisez la fonction TO_DATE.

Alternatives :

DATE_PART , HOUR / MINUTE / SECOND , YEAR* / DAY* / WEEK* / MONTH / QUARTER

Syntaxe

EXTRACT( <date_or_time_part> FROM <date_interval_time_or_timestamp_expr> )
EXTRACT( <date_or_time_part> , <date_interval_time_or_timestamp_expr> )

Arguments

date_or_time_part

The unit of time. Must be one of the values listed in Parties de date et d’heure prises en charge (for example, month). The value can be a string literal or can be unquoted (for example, 'month' or month).

  • Lorsque date_or_time_part correspond à week (ou à l’une de ses variantes), la sortie est contrôlée par le paramètre de session WEEK_START.

  • Lorsque date_or_time_part est dayofweek ou yearofweek (ou l’une de ses variations), la sortie est contrôlée par les paramètres de session WEEK_OF_YEAR_POLICY et WEEK_START.

Pour plus d’informations, y compris des exemples, voir Semaines civiles et jours de semaine.

date_interval_time_or_timestamp_expr

A date, an interval, a time, or a timestamp, or an expression that can be evaluated to one of those data types.

Renvoie

Renvoie une valeur de type de données NUMBER.

Notes sur l’utilisation

  • When date_interval_time_or_timestamp_expr is a year-month interval value, the supported date_or_time_part values are year and month.

  • When date_interval_time_or_timestamp_expr is a day-time interval value, the supported date_or_time_part values are day, hour, minute, second, and nanosecond.

  • Currently, when date_interval_time_or_timestamp_expr is a DATE value, the following date_or_time_part values aren’t supported:

    • epoch_millisecond

    • epoch_microsecond

    • epoch_nanosecond

    Les autres parties de date et d’heure (y compris epoch_second) sont pris en charge.

Exemples

Spécifiez la partie year pour extraire l’année d’un horodatage :

SELECT EXTRACT(year FROM TO_TIMESTAMP('2024-04-10T23:39:20.123-07:00')) AS YEAR;
+------+
| YEAR |
|------|
| 2024 |
+------+

Utilisez EXTRACT avec la fonction DECODE et la partie dayofweek pour renvoyer le nom complet du jour de la semaine en cours :

SELECT DECODE(EXTRACT(dayofweek FROM SYSTIMESTAMP()),
  1, 'Monday',
  2, 'Tuesday',
  3, 'Wednesday',
  4, 'Thursday',
  5, 'Friday',
  6, 'Saturday',
  7, 'Sunday') AS DAYOFWEEK;
+-----------+
| DAYOFWEEK |
|-----------|
| Thursday  |
+-----------+

Note

La sortie dépend de la valeur renvoyée par la fonction SYSTIMESTAMP lorsque vous exécutez la requête. Vous pouvez également utiliser la fonction DAYNAME pour extraire le nom à trois lettres du jour de la semaine de la date ou de l’horodatage spécifié.