Funções de data/hora

A tabela a seguir descreve as funções de data/hora.
Tabela 1. Funções de data/hora
Tipo Descrição
add_months(date,n) Retorna a data que corresponde a date mais o número de meses indicados pelo número inteiro n. Se a data resultante tivesse mais dias do que os disponíveis no mês resultante, o resultado seria o último dia desse mês. Caso contrário, a data resultante terá o mesmo componente de dia que date. Por exemplo:
add_months('March 03, 2015',2) retorna ' '2015-05-03 00:00:00' '
' add_months('March 31, 2015',-1) retorna ' '2015-02-28 00:00:00'
age(ts,ts)
age(ts)
Retorna o intervalo entre dois registros de data e hora. O valor retornado é da mesma precisão que o argumento mais preciso. Por exemplo:
  • select age('10-22-2003', '7-6-2002') retorna '1 year 3 mons 16 days'
  • select age('10-22-2003 09:46:07.325', '7-6-2002') retorna '1 year 3 mons 16 days 09:46:07.325'
Se você especificar um único argumento, a função retornará o intervalo entre a hora atual e o registro de data e hora especificado. Isso é equivalente a ' age(CURRENT_TIMESTAMP, ts).

O suporte ao intervalo SQL Netezza Performance Server não é padrão.

date_part(units,col) Extrai o subcampo representado por units do valor de data/hora, do intervalo ou da duração especificada para col. Essa função é equivalente a ' extract().
date_trunc(units,date) Trunca a data especificada para date para a precisão especificada por units.
extract(units FROM col) Extrai o subcampo representado por units do valor de data/hora, do intervalo ou da duração especificada para col. Essa função é equivalente a ' date_part().
last_day(date) Retorna o último dia do mês da data especificada.
months_between(d1,d2) Retorna o número de mêses entre as datas d1 e d2:
  • Se d1 for posterior a d2, o resultado será positivo.
  • Se d1 for anterior a d2, o resultado será negativo.
  • Se d1 e d2 forem os mesmos dias do mês ou ambos os últimos dias de seus respectivos meses, o resultado será um número inteiro.
  • Caso contrário, o resultado incluirá uma porção fracionada baseada em um mês de 31 dias.
Por exemplo:
  • select months_between('2015-05-23', '2015-04-23') retorna 1
  • select months_between('2015-02-28', '2015-05-31') retorna -3
  • select months_between('2015-05-15', '2014-05-05') retorna 12.322580645 (12 complete months, plus 10 additional days; 10/31=0.322580645.)
next_day(date,weekday) Retorna a data do dia da semana que segue uma data específica. O argumento date pode ser uma data ou um registro de data e hora. O formato do valor retornado é igual ao formato do argumento date.

O argumento weekday é uma sequência literal de três ou mais caracteres indicando o dia da semana ('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT') para o qual a data deve ser retornada. Ele deve ser colocado entre aspas simples e pode conter tanto letras maiúsculas quanto minúsculas. Quaisquer caracteres que são especificados após o terceiro caractere são ignorados. Por exemplo, o primeiro Sábado depois da Quarta-feira, 25 de dezembro de 2013, é em 28 de dezembro de 2013:

select next_day('12-25-2013','Saturday') retorna '2013-12-28'

now() Esta função é a mesmo que current_timestamp. Para obter mais informações, consulte Funções de conversão.
overlaps(a,b,c,d) Determina se dois intervalos de tempo se sobrepõem. Os tipos de dados de:
  • Parâmetros a e c podem ser TIME ou TIMESTAMP, mas devem ser os mesmos para ambos
  • Parâmetros b e d podem ser um de TIME TIME WITH TIME ZONE ou INTERVAL, mas devem ser os mesmos para ambos
O SQL Netezza Performance Server suporta o predicado padrão de sobreposição de SQL.
duration_add(a,b) Retorna a duração que resulta quando os dois argumentos (representados por a e b) são incluídos. As combinações válidas de tipos de dados de argumentos estão descritas na Tabela 2.
duration_subtract(a,b) Retorna a duração que resulta quando o segundo argumento (b) é subtraído do primeiro argumento (a). As combinações válidas de tipos de dados de argumento estão descritas na Tabela 3.
timeofday() A função é a versão de sequência detalhada de current_timestamp. Por exemplo, Mon 01 Dec 2014 16:12:05 EST. O formato da saída é determinado pela função de conversão usada (consulte Funções de conversão )
timezone(timestamp from_tz to_tz) Converte o valor de registro de data e hora de entrada no fuso horário from_tz para um registro de data e hora no valor de fuso horário to_tz. Por exemplo:
select TIMEZONE(timestamp '2000-07-04 17:00:00', 'America/New_York', 
'America/Los_Angeles');
      TIMEZONE
---------------------
 2000-07-04 14:00:00
(1 row)

O sistema usa a biblioteca ICU para verificar e resolver os valores de fuso horário fornecidos. Consulte http://userguide.icu-project.org/datetime/timezone para obter mais informações sobre IDs programáticas como Canada/Newfoundland ou valores de deslocamento brutos como GMT-03:30 para especificar fusos horários de forma confiável. Se a função não puder resolver os fusos horários especificados na consulta, a consulta falhará com a mensagemERROR: Time zone 'invalid_tz' not recognized.

Tabela 2. Combinações válidas de tipos de dados para os argumentos da função duration_add
Primeiro tipo de dados de argumento Segundo tipo de dados de argumento Retorna
data numeric(8,0) data
horário numeric(6,0) horário
registro de data e hora numeric(6,0) registro de data e hora
numeric(8,0)
numeric(14,0)
numeric(15,1)
numeric(16,2)
numeric(17,3)
numeric(18,4)
numeric(19,5)
numeric(20,6)
Tabela 3. Combinações válidas de tipos de dados para os argumentos da função duration_subtract
Primeiro tipo de dados de argumento Segundo tipo de dados de argumento Retorna
data data numeric(8,0)
numeric(8,0) data
horário horário numeric(6,0)
numeric(6,0) horário
registro de data e hora registro de data e hora numeric(20,6)
numeric(6,0) registro de data e hora
numeric(8,0)
numeric(14,0)
numeric(15,1)
numeric(16,2)
numeric(17,3)
numeric(18,4)
numeric(19,5)
numeric(20,6)
Para o segundo argumento ou o valor retornado da função duration_add ou duration_subtract :
  • O tipo numéric(6,0) representa uma duração do formato hhmmss, por exemplo, 030745 para três horas, sete minutos e 45 segundos.
  • O tipo numéric(8,0) representa uma duração do formato AAAAMMDD, por exemplo 00020525 para dois anos, cinco meses e 25 dias.
  • Outros valores numéricos contêm 14-20 dígitos:
    • Os primeiros 8 dígitos indicam a parte da data da duração no formato AAAAMMDD.
    • Os próximos 6 dígitos indicam a parte do tempo de duração no formato hhmmss.
    • Os próximos 0-6 dígitos indicam uma fração de um segundo.
    Por exemplo, a duração 00010521010521999::numeric(17,3) representa um período de um ano, cinco meses, 21 dias, uma hora, cinco minutos e 21.999 segundos.