Catégories :

Fonctions de date et d’heure

TIMESTAMP_FROM_PARTS

Crée un horodatage à partir de composants numériques individuels. Si aucun fuseau horaire n’est en vigueur, la fonction peut être utilisée pour créer un horodatage à partir d’une expression de date et d’une expression d’heure.

Alias :

TIMESTAMPFROMPARTS

Variations (et alias) :

TIMESTAMP_LTZ_FROM_PARTS , TIMESTAMPLTZFROMPARTS

TIMESTAMP_NTZ_FROM_PARTS , TIMESTAMPNTZFROMPARTS

TIMESTAMP_TZ_FROM_PARTS , TIMESTAMPTZFROMPARTS

Syntaxe

TIMESTAMP_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond> ] [, <time_zone> ] )

TIMESTAMP_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_LTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )
TIMESTAMP_NTZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] )

TIMESTAMP_NTZ_FROM_PARTS( <date_expr>, <time_expr> )
TIMESTAMP_TZ_FROM_PARTS( <year>, <month>, <day>, <hour>, <minute>, <second> [, <nanosecond>] [, <time_zone>] )

Note

La version de l’expression de date et heure de TIMESTAMP_FROM_PARTS n’est valide que lorsque le paramètre de session TIMESTAMP_TYPE_MAPPING est défini sur TIMESTAMP_NTZ.

Arguments

Obligatoire :

année

Expression entière à utiliser comme année pour créer un horodatage.

mois

Expression entière à utiliser comme mois pour créer un horodatage, janvier étant représenté par 1 et décembre par 12.

jour

Expression entière à utiliser comme jour pour créer un horodatage, généralement comprise entre 1 et 31.

heure

Expression entière à utiliser comme heure pour créer un horodatage, généralement comprise entre 0-23.

minute

Expression entière à utiliser comme minute pour créer un horodatage, généralement comprise entre 0-59.

seconde

Expression entière à utiliser en tant que seconde pour créer un horodatage, généralement comprise entre 0-59.

expr_date , expr_heure

Spécifie les expressions de date et d’heure à utiliser pour créer un horodatage, où expr_date indique l’année, le mois et le jour de l’horodatage et expr_heure indique les heures, les minutes, les secondes et les nanosecondes du jour correspondant. Valable uniquement pour :

  • TIMESTAMP_FROM_PARTS (lorsque le paramètre de session TIMESTAMP_TYPE_MAPPING est défini sur TIMESTAMP_NTZ)

  • TIMESTAMP_NTZ_FROM_PARTS

Facultatif :

nanosecondes

An integer expression to use as a nanosecond for building a timestamp, usually in the 0-999999999 range.

fuseau_horaire

Une expression de chaîne à utiliser comme fuseau horaire pour créer un horodatage (par exemple America/Los_Angeles). Valable uniquement pour :

  • TIMESTAMP_FROM_PARTS (lorsque le paramètre de session TIMESTAMP_TYPE_MAPPING est défini sur TIMESTAMP_TZ)

  • TIMESTAMP_TZ_FROM_PARTS

Notes sur l’utilisation

  • Les variations de TIMESTAMP_FROM_PARTS sont généralement utilisées pour gérer les valeurs dans les plages de valeurs « normales » (par exemple, les mois 1-12, les jours 1-31, les heures 0-23, etc.) ; cependant, elles peuvent également gérer des valeurs en dehors de ces plages. Cela permet de choisir le énième jour de l’année ou la énième seconde de la journée, ce qui peut être utile pour simplifier certains calculs.

  • TIMESTAMP_FROM_PARTS équivaut à la variation spécifiée par le paramètre de session TIMESTAMP_TYPE_MAPPING (la valeur par défaut est TIMESTAMP_LTZ).

Exemples

Définissez les variables de session qui contrôlent le format de sortie et le fuseau horaire :

ALTER SESSION SET TIMESTAMP_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM';
ALTER SESSION SET TIMESTAMP_NTZ_OUTPUT_FORMAT='YYYY-MM-DD HH24:MI:SS.FF9 TZH:TZM';
ALTER SESSION SET TIMEZONE='America/New_York';

Utilisation de TIMESTAMP_LTZ_FROM_PARTS :

SELECT TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00);
+--------------------------------------------------+
| TIMESTAMP_LTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|--------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400              |
+--------------------------------------------------+

Utilisation de TIMESTAMP_NTZ_FROM_PARTS :

select timestamp_ntz_from_parts(2013, 4, 5, 12, 00, 00, 987654321);
+-------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 987654321) |
|-------------------------------------------------------------|
| 2013-04-05 12:00:00.987654321                               |
+-------------------------------------------------------------+

Utilisation de TIMESTAMP_NTZ_FROM_PARTS avec une date et une heure plutôt qu’avec l’année, le mois, le jour, l’heure, etc. :

select timestamp_ntz_from_parts(to_date('2013-04-05'), to_time('12:00:00'));
+----------------------------------------------------------------------+
| TIMESTAMP_NTZ_FROM_PARTS(TO_DATE('2013-04-05'), TO_TIME('12:00:00')) |
|----------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000                                        |
+----------------------------------------------------------------------+

Utilisation de TIMESTAMP_TZ_FROM_PARTS avec un fuseau horaire de session par défaut (“Amérique/New_York”/-0400) :

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00);
+-------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00) |
|-------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0400             |
+-------------------------------------------------+

Utilisation de TIMESTAMP_TZ_FROM_PARTS avec un fuseau horaire spécifié (“Amérique/Los_Angeles”/-0700) ; notez également l’utilisation de 0 comme argument en nanosecondes :

select timestamp_tz_from_parts(2013, 4, 5, 12, 00, 00, 0, 'America/Los_Angeles');
+---------------------------------------------------------------------------+
| TIMESTAMP_TZ_FROM_PARTS(2013, 4, 5, 12, 00, 00, 0, 'AMERICA/LOS_ANGELES') |
|---------------------------------------------------------------------------|
| 2013-04-05 12:00:00.000000000 -0700                                       |
+---------------------------------------------------------------------------+

Traitement des valeurs hors des plages normales (en soustrayant 1 heure et en spécifiant -3 600 secondes) :

select timestamp_from_parts(2013, 4, 5, 12, 0, -3600);
+------------------------------------------------+
| TIMESTAMP_FROM_PARTS(2013, 4, 5, 12, 0, -3600) |
|------------------------------------------------|
| 2013-04-05 11:00:00.000000000                  |
+------------------------------------------------+