PerroCobolero

PerroCobolero

ADS

miércoles, 27 de julio de 2016

DB2 - Funciones escalares para fechas

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.

DATELa 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_DATELa 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               


 
YEARLa 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


MONTHLa 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_MONTHSLa 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

3 comentarios:

  1. hola, no entiendo funcionalidad week_iso, parece igual q week. podria alguien ayudarme?

    ResponderBorrar
    Respuestas
    1. Por 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?

      Borrar
  2. buen 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