Funciones de fecha y hora

La tabla siguiente describe las funciones de fecha/hora.
Tabla 1. Funciones de fecha/hora
Tipo Descripción
add_months(date,n) Devuelve la fecha que corresponde a date más el número de meses indicado por el entero n. Si la fecha resultante tendría más días que los disponibles en el mes resultante, el resultado es el último día de es mes. De lo contrario, la fecha resultante tiene el mismo componente de día que date. Por ejemplo:
'add_months('March 03, 2015',2) ' devuelve ' '2015-05-03 00:00:00' '
' add_months('March 31, 2015',-1) devuelve ' '2015-02-28 00:00:00'
age(ts,ts)
age(ts)
Devuelve el intervalo entre dos indicaciones de fecha y hora. El valor devuelto tiene la misma precisión que el argumento más preciso. Por ejemplo:
  • select age('10-22-2003', '7-6-2002') devuelve '1 year 3 mons 16 days'
  • select age('10-22-2003 09:46:07.325', '7-6-2002') devuelve '1 year 3 mons 16 days 09:46:07.325'
Si se especifica un único argumento, la función devuelve el intervalo entre la hora actual y la indicación de fecha y hora especificada. Equivale a " age(CURRENT_TIMESTAMP, ts).

El soporte de intervalos SQL Netezza Performance Server no es estándar.

date_part(units,col) Extrae el subcampo representado por units del valor de fecha y hora, el intervalo o la duración que se ha especificado para col. Esta función es equivalente a extract().
date_trunc(units,date) Trunca la fecha especificada para date a la precisión especificada por units.
extract(units FROM col) Extrae el subcampo representado por units del valor de fecha y hora, el intervalo o la duración que se ha especificado para col. Esta función es equivalente a date_part().
last_day(date) Devuelve el último día del mes de la fecha especificada.
months_between(d1,d2) Devuelve el número de meses entre las fechas d1 y d2:
  • Si d1 es posterior a d2, el resultado es positivo.
  • Si d1 es anterior a d2, el resultado es negativo.
  • Si d1 y d2 son los mismos días del mes o ambos son los últimos días de sus meses respectivos, el resultado es un entero.
  • En caso contrario, el resultado incluye una parte fraccional basada en un mes de 31 días.
Por ejemplo:
  • select months_between('2015-05-23', '2015-04-23') devuelve 1
  • select months_between('2015-02-28', '2015-05-31') devuelve -3
  • select months_between('2015-05-15', '2014-05-05') devuelve 12.322580645 (12 meses completos más 10 días adicionales; 10/31=0.322580645).
next_day(date,weekday) Devuelve la fecha del día de la semana que sigue a una fecha concreta. El argumento date puede ser una fecha o una indicación de fecha y hora. El formato del valor devuelto es el mismo que el formato del argumento date.

El argumento weekday es un literal de serie de tres o más caracteres que indica el día de la semana ('SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT') para el que debe devolverse la fecha. Debe estar encapsulado entre comillas simples, y puede contener tanto letras mayúsculas como minúsculas. Los caracteres especificados después del tercer carácter se ignoran. Por ejemplo, el primer sábado después del miércoles 25 de diciembre de 2013 es el 28 de diciembre de 2013:

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

now() Esta función es la misma que current_timestamp. Para más información, consulte Funciones de conversión.
overlaps(a,b,c,d) Determina si dos intervalos de tiempo se solapan. Los tipos de datos:
  • Los parámetros a y c pueden ser TIME o TIMESTAMP, pero deben ser iguales para ambos.
  • Los parámetros b y d pueden ser TIME, TIME WITH TIME ZONE o INTERVAL, pero deben ser el mismo para ambos.
Netezza Performance Server SQL admite el predicado de solapamiento SQL estándar.
duration_add(a,b) Devuelve la duración que es resultado de que dos argumentos (representados por a y b) se añadan. Las combinaciones válidas de los tipos de datos de los argumentos se describen en la Tabla 2.
duration_subtract(a,b) Devuelve la duración que resulta cuando el segundo argumento (b) se resta del primer argumento (a). Las combinaciones válidas de tipos de datos de argumentos se describen en la Tabla 3.
timeofday() La función es la versión de la serie detallada (verbose) de current_timestamp. Por ejemplo, Mon 01 Dec 2014 16:12:05 EST. El formato de la salida viene determinado por la función de conversión que se utilice (véase Funciones de conversión)
timezone(timestamp from_tz to_tz) Convierte el valor de la indicación de fecha y hora de entrada de la zona horaria from_tz a una indicación de fecha y hora en el valor de la zona horaria to_tz. Por ejemplo:
select TIMEZONE(timestamp '2000-07-04 17:00:00', 'America/New_York', 
'America/Los_Angeles');
      TIMEZONE
---------------------
 2000-07-04 14:00:00
(1 row)

El sistema utiliza la biblioteca ICU para verificar y resolver los valores de zona horaria proporcionados. http://userguide.icu-project.org/datetime/timezone para obtener más información sobre ID programáticos como Canada/Newfoundland o valores de desplazamiento brutos como GMT-03:30 " para especificar zonas horarias de forma fiable. Si la función no puede resolver las zonas horarias especificadas en la consulta, ésta falla con el mensajeERROR: Time zone 'invalid_tz' not recognized.

Tabla 2. Combinaciones válidas de tipos de datos para los argumentos de la función duration_add
Tipo de datos del primer argumento Tipo de datos del segundo argumento Devuelve
fecha numeric(8,0) fecha
Hora numeric(6,0) Hora
indicación de fecha y hora numeric(6,0) indicación de fecha y 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)
Tabla 3. Combinaciones válidas de tipos de datos para los argumentos de la función duration_subtract
Tipo de datos del primer argumento Tipo de datos del segundo argumento Devuelve
fecha fecha numeric(8,0)
numeric(8,0) fecha
Hora Hora numeric(6,0)
numeric(6,0) Hora
indicación de fecha y hora indicación de fecha y hora numeric(20,6)
numeric(6,0) indicación de fecha y 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 el segundo argumento o el valor devuelto de la función duration_add o duration_subtract:
  • El tipo numeric(6,0) representa una duración con la forma hhmmss; por ejemplo, 030745 para tres horas, siete minutos y 45 segundos.
  • El tipo numeric(8,0) representa una duración con la forma AAAAMMDD; por ejemplo, 00020525 para dos años, cinco meses y 25 días.
  • Otros valores numéricos contienen de 14 a 20 dígitos:
    • Los primeros 8 dígitos indican la parte de la fecha de la duración con el formato AAAAMMDD.
    • Los 6 dígitos siguientes indican la parte de la duración de la duración con el formato hhmmss.
    • Los siguientes de 0 a 6 dígitos indican una fracción de un segundo.
    Por ejemplo, la duración 00010521010521999::numeric(17,3) representa un periodo de tiempo de 1 año, 5 meses, 21 días, 1 hora, 5 minutos y 21,999 segundos.