DB2 - Funciones escalares para fechas
Las funciones escalares se aplican a valores únicos de entrada, y devuelven un resultado de valor único.
Aquí veremos las funciones que nos proporciona DB2 para manejar fechas.
DATE: La función DATE devuelve una fecha que se deriva de un valor.
Ej: Obtenemos un date del string '2013-01-01'
SELECT DATE('2013-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2013-01-01
TO_DATE: La función TO_DATE devuelve un valor de timestamp que se basa en la interpretación del string de entrada utilizando el formato especificado.
Ej: Obtenemos un TIMESTAMP a partir de una fecha en formato de 8.
SELECT TO_DATE('20130101','YYYYMMDD')
FROM SYSIBM.SYSDUMMY1;
COL1
--------------------------
2013-01-01-00.00.00.000000
YEAR: La función YEAR devuelve la parte del año de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Obtenemos el año del string '2013-01-01'
SELECT YEAR('2013-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2013
MONTH: La función MONTH devuelve la parte del mes de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Obtenemos el mes del string '2013-02-01'
SELECT MONTH('2013-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2
ADD_MONTHS: La función ADD_MONTHS devuelve una fecha resultado de sumar un número de meses a la fecha pasada como argumento.
Ej: Sumamos 12 meses a la fecha '2013-02-01'
SELECT ADD_MONTHS('2013-02-01', 12)
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2014-02-01
MONTHS_BETWEEN: La función MONTHS_BETWEEN devuelve el número estimado de meses entre dos fechas pasadas como argumento.
Ej: Vemos los meses que hay entre '2013-02-01' y 2014-02-01'
SELECT MONTHS_BETWEEN('2013-02-01','2014-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------------------------------
-12.000000000000000
WEEK: La función WEEK devuelve un número entero comprendido entre 1 y 54 que representa la semana del año. Para el cómputo de una semana se comienza en Domingo.
Ej: Vemos que semana corresponde con la fecha '2012-01-01'
SELECT WEEK('2012-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
WEEK_ISO: La función WEEK_ISO devuelve un número entero comprendido entre 1 y 53 que representa la semana del año. Para el cómputo de una semana se comienza en Lunes e incluye los 7 días.
Ej: Vemos que semana corresponde con la fecha '2012-01-01'
SELECT WEEK_ISO('2012-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
52
DAY: La función DAY devuelve la parte del día de un valor. El valor debe ser un string válido de una fecha o timestamp, o bien un númerico que represente una fecha o timestamp.
Ej: Vemos que día corresponde con la fecha '2012-02-01'
SELECT DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
DAYOFMONTH: La función DAYOFMONTH devuelve la parte del día de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Vemos que día del mes corresponde con la fecha '2012-02-01'
SELECT DAYOFMONTH('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
DAYOFWEEK: La función DAYOFWEEK devuelve un número entero del 1 al 7 que representa el día de la semana, tomando como día 1 el Domingo y 7 el Sábado.
Ej: Vemos que día de la semana corresponde con la fecha '2012-02-01'
SELECT DAYOFWEEK('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
4
DAYOFWEEK_ISO: La función DAYOFWEEK_ISO devuelve un número entero del 1 al 7 que representa el día de la semana, tomando como día 1 el Lunes y 7 el Domingo.
Ej: Vemos que día de la semana corresponde con la fecha '2012-02-01'
SELECT DAYOFWEEK_ISO('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
3
DAYOFYEAR: La función DAYOFYEAR devuelve un número entero del 1 al 366 que representa el día del año, tomando como día 1 el 1 de Enero.
Ej: Vemos que día del año corresponde con la fecha '2012-02-01'
SELECT DAYOFYEAR('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
32
DAYS: La función DAYS devuelve un número entero que representa la fecha. El valor 1 respresenta el 1 del 1 de 0001.
Ej: Vemos que entero corresponde con la fecha '2012-02-01'
SELECT DAYS('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
734534
JULIAN_DAY: La función JULIAN_DAY devuelve un número entero que representa el número de días desde el 1 de Enero de 4713 A.C.
Ej: Vemos que día juliano corresponde con la fecha '2012-02-01'
SELECT JULIAN_DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2455959
LAST_DAY: La función LAST_DAY devuelve una fecha que representa el último día del mes pasado por argumento.
Ej: Vemos que fecha corresponde con el último día de la fecha '2012-02-01'
SELECT LAST_DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2012-02-29
NEXT_DAY: La función NEXT_DAY devuelve un timestamp que representa el siguiente día, al pasado por argumento, que se corresponde al día de la semana indicado por argumento.
Ej: Vemos que fecha se corresponde al siguiente Lunes a la fecha '2013-05-17'
SELECT NEXT_DAY('2013-05-17','MONDAY')
FROM SYSIBM.SYSDUMMY1;
COL1
--------------------------
2013-05-20-00.00.00.000000
Esperamos no dejarnos ninguna de las más habituales, de todas formas os recomendamos para profundizar en las funciones consultar el SQL Reference de IBM para DB2 10 z/OS.
Fuentes: SQL Reference (SC19-2983-03) IBM y Wikipedia
Aquí veremos las funciones que nos proporciona DB2 para manejar fechas.
DATE: La función DATE devuelve una fecha que se deriva de un valor.
Ej: Obtenemos un date del string '2013-01-01'
SELECT DATE('2013-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2013-01-01
TO_DATE: La función TO_DATE devuelve un valor de timestamp que se basa en la interpretación del string de entrada utilizando el formato especificado.
Ej: Obtenemos un TIMESTAMP a partir de una fecha en formato de 8.
SELECT TO_DATE('20130101','YYYYMMDD')
FROM SYSIBM.SYSDUMMY1;
COL1
--------------------------
2013-01-01-00.00.00.000000
YEAR: La función YEAR devuelve la parte del año de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Obtenemos el año del string '2013-01-01'
SELECT YEAR('2013-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2013
MONTH: La función MONTH devuelve la parte del mes de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Obtenemos el mes del string '2013-02-01'
SELECT MONTH('2013-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2
ADD_MONTHS: La función ADD_MONTHS devuelve una fecha resultado de sumar un número de meses a la fecha pasada como argumento.
Ej: Sumamos 12 meses a la fecha '2013-02-01'
SELECT ADD_MONTHS('2013-02-01', 12)
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2014-02-01
MONTHS_BETWEEN: La función MONTHS_BETWEEN devuelve el número estimado de meses entre dos fechas pasadas como argumento.
Ej: Vemos los meses que hay entre '2013-02-01' y 2014-02-01'
SELECT MONTHS_BETWEEN('2013-02-01','2014-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------------------------------
-12.000000000000000
WEEK: La función WEEK devuelve un número entero comprendido entre 1 y 54 que representa la semana del año. Para el cómputo de una semana se comienza en Domingo.
Ej: Vemos que semana corresponde con la fecha '2012-01-01'
SELECT WEEK('2012-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
WEEK_ISO: La función WEEK_ISO devuelve un número entero comprendido entre 1 y 53 que representa la semana del año. Para el cómputo de una semana se comienza en Lunes e incluye los 7 días.
Ej: Vemos que semana corresponde con la fecha '2012-01-01'
SELECT WEEK_ISO('2012-01-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
52
DAY: La función DAY devuelve la parte del día de un valor. El valor debe ser un string válido de una fecha o timestamp, o bien un númerico que represente una fecha o timestamp.
Ej: Vemos que día corresponde con la fecha '2012-02-01'
SELECT DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
DAYOFMONTH: La función DAYOFMONTH devuelve la parte del día de un valor. El valor debe ser un string válido de una fecha o timestamp.
Ej: Vemos que día del mes corresponde con la fecha '2012-02-01'
SELECT DAYOFMONTH('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
1
DAYOFWEEK: La función DAYOFWEEK devuelve un número entero del 1 al 7 que representa el día de la semana, tomando como día 1 el Domingo y 7 el Sábado.
Ej: Vemos que día de la semana corresponde con la fecha '2012-02-01'
SELECT DAYOFWEEK('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
4
DAYOFWEEK_ISO: La función DAYOFWEEK_ISO devuelve un número entero del 1 al 7 que representa el día de la semana, tomando como día 1 el Lunes y 7 el Domingo.
Ej: Vemos que día de la semana corresponde con la fecha '2012-02-01'
SELECT DAYOFWEEK_ISO('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
3
DAYOFYEAR: La función DAYOFYEAR devuelve un número entero del 1 al 366 que representa el día del año, tomando como día 1 el 1 de Enero.
Ej: Vemos que día del año corresponde con la fecha '2012-02-01'
SELECT DAYOFYEAR('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
32
DAYS: La función DAYS devuelve un número entero que representa la fecha. El valor 1 respresenta el 1 del 1 de 0001.
Ej: Vemos que entero corresponde con la fecha '2012-02-01'
SELECT DAYS('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
734534
JULIAN_DAY: La función JULIAN_DAY devuelve un número entero que representa el número de días desde el 1 de Enero de 4713 A.C.
Ej: Vemos que día juliano corresponde con la fecha '2012-02-01'
SELECT JULIAN_DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
-----------
2455959
LAST_DAY: La función LAST_DAY devuelve una fecha que representa el último día del mes pasado por argumento.
Ej: Vemos que fecha corresponde con el último día de la fecha '2012-02-01'
SELECT LAST_DAY('2012-02-01')
FROM SYSIBM.SYSDUMMY1;
COL1
----------
2012-02-29
NEXT_DAY: La función NEXT_DAY devuelve un timestamp que representa el siguiente día, al pasado por argumento, que se corresponde al día de la semana indicado por argumento.
Ej: Vemos que fecha se corresponde al siguiente Lunes a la fecha '2013-05-17'
SELECT NEXT_DAY('2013-05-17','MONDAY')
FROM SYSIBM.SYSDUMMY1;
COL1
--------------------------
2013-05-20-00.00.00.000000
Esperamos no dejarnos ninguna de las más habituales, de todas formas os recomendamos para profundizar en las funciones consultar el SQL Reference de IBM para DB2 10 z/OS.
Fuentes: SQL Reference (SC19-2983-03) IBM y Wikipedia
hola, no entiendo funcionalidad week_iso, parece igual q week. podria alguien ayudarme?
ResponderBorrarPor que sale 52 en week_iso? Tampoco entiendo q onda con days y dayofmonth? q diferencia hay?. y por q sale una cantidad tan grande con DAYS?
Borrarbuen día, quiero la función inversa a Week, recuperar el primer dia de la semana 20 (por decir algo) de x año, pero no si es lunes martes, etc... por ejemplo recuperar el valor 20/10/2020, sabe si existe algo así?
ResponderBorrar