Catégories :

Fonctions de date et d’heure

DATE_PART

Extrait la date ou la partie de date ou d’heure spécifiée d’une date, d’une heure ou d’un horodatage.

Alternatives :

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

Syntaxe

DATE_PART( <date_or_time_part> , <date_interval_time_or_timestamp_expr> )
DATE_PART( <date_or_time_part> FROM <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.

Astuce

Pour extraire une valeur DATE ou TIME complète au lieu d’une seule partie d’une valeur TIMESTAMP, vous pouvez convertir la valeur TIMESTAMP en une valeur DATE ou TIME, respectivement. Par exemple :

SELECT '2025-04-08T23:39:20.123-07:00'::TIMESTAMP::DATE AS full_date_value;
+-----------------+
| FULL_DATE_VALUE |
|-----------------|
| 2025-04-08      |
+-----------------+
SELECT '2025-04-08T23:39:20.123-07:00'::TIMESTAMP::TIME AS full_time_value;
+-----------------+
| FULL_TIME_VALUE |
|-----------------|
| 23:39:20        |
+-----------------+

Exemples

Ceci montre un exemple simple d’extraction d’une partie de DATE :

SELECT DATE_PART(quarter, '2024-04-08'::DATE);
+----------------------------------------+
| DATE_PART(QUARTER, '2024-04-08'::DATE) |
|----------------------------------------|
|                                      2 |
+----------------------------------------+

Voici un exemple d’extraction d’une partie d’un TIMESTAMP :

SELECT TO_TIMESTAMP(
  '2024-04-08T23:39:20.123-07:00') AS "TIME_STAMP1",
  DATE_PART(year, "TIME_STAMP1") AS "EXTRACTED YEAR";
+-------------------------+----------------+
| TIME_STAMP1             | EXTRACTED YEAR |
|-------------------------+----------------|
| 2024-04-08 23:39:20.123 |           2024 |
+-------------------------+----------------+

Ceci montre un exemple de conversion de TIMESTAMP en nombre de secondes depuis le début de l’epoch Unix (minuit le 1er janvier 1970) :

SELECT TO_TIMESTAMP(
  '2024-04-08T23:39:20.123-07:00') AS "TIME_STAMP1",
  DATE_PART(epoch_second, "TIME_STAMP1") AS "EXTRACTED EPOCH SECOND";
+-------------------------+------------------------+
| TIME_STAMP1             | EXTRACTED EPOCH SECOND |
|-------------------------+------------------------|
| 2024-04-08 23:39:20.123 |             1712619560 |
+-------------------------+------------------------+

Ceci montre un exemple de conversion de TIMESTAMP en nombre de millisecondes depuis le début de l’epoch Unix (minuit le 1er janvier 1970) :

SELECT TO_TIMESTAMP(
  '2024-04-08T23:39:20.123-07:00') AS "TIME_STAMP1",
  DATE_PART(epoch_millisecond, "TIME_STAMP1") AS "EXTRACTED EPOCH MILLISECOND";
+-------------------------+-----------------------------+
| TIME_STAMP1             | EXTRACTED EPOCH MILLISECOND |
|-------------------------+-----------------------------|
| 2024-04-08 23:39:20.123 |               1712619560123 |
+-------------------------+-----------------------------+