- Categorias:
TIMESTAMP_FROM_PARTS¶
Cria um carimbo de data/hora a partir de componentes numéricos individuais. Se nenhum fuso horário estiver em vigor, a função pode ser usada para criar um carimbo de data/hora a partir de uma expressão de data e hora.
- Aliases:
TIMESTAMPFROMPARTS
- Variações (e aliases):
TIMESTAMP_LTZ_FROM_PARTS , TIMESTAMPLTZFROMPARTS
TIMESTAMP_NTZ_FROM_PARTS , TIMESTAMPNTZFROMPARTS
TIMESTAMP_TZ_FROM_PARTS , TIMESTAMPTZFROMPARTS
Sintaxe¶
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>] )
Nota
A versão de expressão de data e hora de TIMESTAMP_FROM_PARTS só é válida quando o parâmetro de sessão TIMESTAMP_TYPE_MAPPING é definido como TIMESTAMP_NTZ.
Argumentos¶
Obrigatório:
year
Uma expressão inteira a ser usada como um ano para a criação de um carimbo de data/hora.
month
Uma expressão inteira a ser usada como um mês para criar um carimbo de data/hora, com janeiro representado como
1
e dezembro como12
.day
Uma expressão inteira a ser usada como um dia para criar um carimbo de data/hora, geralmente na faixa
1
-31
.hour
Uma expressão inteira a ser usada como uma hora para criar um carimbo de data/hora, geralmente na faixa
0
-23
.minute
Uma expressão inteira a ser usada como um minuto para criar um carimbo de data/hora, geralmente na faixa
0
-59
.second
Uma expressão inteira a ser usada como um segundo para criar um carimbo de data/hora, geralmente na faixa
0
-59
.date_expr
,time_expr
Especifica as expressões de data e hora a serem usadas para a criação de um carimbo de data/hora onde
date_expr
fornece o ano, mês e dia para o carimbo de data/hora etime_expr
fornece a hora, minuto, segundo e nanossegundos dentro do dia. Válido somente para:TIMESTAMP_FROM_PARTS (quando o parâmetro da sessão TIMESTAMP_TYPE_MAPPING é definido como TIMESTAMP_NTZ)
TIMESTAMP_NTZ_FROM_PARTS
Opcional:
nanoseconds
Uma expressão inteira a ser usada como um nanossegundo para construir um carimbo de data/hora, geralmente na faixa
0
-999999999
.time_zone
Uma expressão de cadeia de caracteres a ser usada como fuso horário para a construção de um carimbo de data/hora (por exemplo,
America/Los_Angeles
). Válido somente para:TIMESTAMP_FROM_PARTS (quando o parâmetro da sessão TIMESTAMP_TYPE_MAPPING é definido como TIMESTAMP_TZ)
TIMESTAMP_TZ_FROM_PARTS
Notas de uso¶
Variações de TIMESTAMP_FROM_PARTS são normalmente usadas para lidar com valores nas faixas de valores “normais” (por exemplo, meses
1
-12
, dias1
-31
, horas0
-23
etc.); no entanto, elas também podem lidar com valores fora dessas faixas. Isto permite escolher o enésimo dia em um ano ou enésimo segundo em um dia, o que pode ser útil para simplificar alguns cálculos.TIMESTAMP_FROM_PARTS é equivalente à variação especificada pelo parâmetro de sessão TIMESTAMP_TYPE_MAPPING (o padrão é TIMESTAMP_NTZ).
Exemplos¶
Defina as variáveis de sessão que controlam o formato de saída e o fuso horário:
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';
Usando 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 | +--------------------------------------------------+
Usando 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 | +-------------------------------------------------------------+
Usando TIMESTAMP_NTZ_FROM_PARTS
com data e hora em vez de ano, mês, dia, hora 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 | +----------------------------------------------------------------------+
Usando TIMESTAMP_TZ_FROM_PARTS
com um fuso horário padrão da sessão (‘América/Nova_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 | +-------------------------------------------------+
Usando TIMESTAMP_TZ_FROM_PARTS
com um fuso horário especificado (‘América/Los_Angeles’/-0700); note também o uso de 0 como o argumento dos nanossegundos:
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 | +---------------------------------------------------------------------------+
Manuseio de valores fora dos intervalos normais (subtraindo 1 hora especificando -3600 segundos):
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 | +------------------------------------------------+