- Catégories :
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 :
year
Expression entière à utiliser comme année pour créer un horodatage.
month
Expression entière à utiliser comme mois pour créer un horodatage, janvier étant représenté par
1
et décembre par12
.day
Expression entière à utiliser comme jour pour créer un horodatage, généralement comprise entre
1
et31
.hour
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
.second
Expression entière à utiliser en tant que seconde pour créer un horodatage, généralement comprise entre
0
-59
.date_expr
,time_expr
Spécifie les expressions de date et d’heure à utiliser pour créer un horodatage, où
date_expr
indique l’année, le mois et le jour de l’horodatage ettime_expr
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 :
nanoseconds
An integer expression to use as a nanosecond for building a timestamp, usually in the
0
-999999999
range.time_zone
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 jours1
-31
, les heures0
-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_NTZ).
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 | +------------------------------------------------+