¡Esta es una revisión vieja del documento!
Funciones especiales para reportes
En construcción
En esta sección se podrá encontrar información sobre funciones especiales para creación de reportes
Filtrado de fechas
Los reportes con grandes cantidades de registros pueden tardar mucho tiempo en la generación del informe o incluso verse interrumpidos cuando el tiempo de procesamiento excede los parámetros del sistema. En este sentido se recomiendo hacer uso de las siguientes variables:
- FECHADESDE: Corresponde a la fecha inicial del rango con el cual se va a consultar.
- FECHAHASTA: Corresponde a la fecha final del rango con el cual se realiza la consulta.
Las variables en el sistema toman como valor por defecto un rango de una semana, es decir, FECHAHASTA corresponde al día actual (equivalente al now()) y FECHADESDE corresponde a 7 días anteriores a la fecha actual (equivalente al now()-7). Estas variables luego cambiarán en el Dashboard cuando se haga uso del calendario tomando las fechas que se seleccionen.
Ejemplo de uso
Para usar las variables de filtrado se usan las llaves( {{}} )
SELECT caso.REFNUM, caso.FECHACREACION FROM caso WHERE caso.FECHACREACION BETWEEN {{FECHADESDE}} AND {{FECHAHASTA}}
Conversión de fechas
Las fechas en el sistema se almacenan en formato UTC, adicionalmente la visualización es similar a un string, por lo que es importante considerar un par de funciones para mejorar el uso de fechas en los reportes.
Nota: Resulta muy importante considerar la conversión de las fechas al UTC de la región correcta especialmente cuando se usan como filtro para la consulta, pues así nos estaremos asegurando que estamos tomando los registros dentro del rango correcto.
Función CONVERT_TZ
La función Convert_TZ es propia de mysql y permite convertir una fecha desde una zona horaria a otra diferente. Un ejemplo de uso es el siguiente, donde la fecha actual se convierte de la zona horaria UTC a la zona horaria 'América/Bogota'
SELECT NOW(), CONVERT_TZ(NOW(),'UTC','America/Bogota')
Función GET_VALUE
La función GET_VALUE permite obtener el valor correspondiente a la zona horaria especificada en el sistema, el cual obtendremos mediante el parámetro 'TIME_ZONE'. Su uso es el siguiente:
SELECT GETVALUE('TIME_ZONE')
Función DATE_FORMAT
La función DATE_FORMAT permite darle un formato a las fechas mediante comodines: Año (%Y), Mes (%m), Día(%d), Hora (%H), Minutos (%i), Segundos (%s). Se usa de la siguiente forma:
SELECT DATE_FORMAT(NOW(),'%Y-%m-%d %H:%i:%s')
El resultado será : 2020-07-29 19:17:32
Las tres funciones anteriores se pueden combinar con el fin de tener la visualización de las fechas de forma correcta o para definir el filtro correctamente en el WHERE. Un ejemplo de esto sería:
SELECT caso.FECHACREACION, DATE_FORMAT(caso.FECHACREACION, '%Y-%m-%d %H:%i:%s') AS 'FECHA CON FORMATO', GETVALUE('TIME_ZONE') AS 'ZONA HORARIA', DATE_FORMAT(CONVERT_TZ(caso.FECHACREACION,'UTC',GETVALUE('TIME_ZONE')), '%Y-%m-%d %H:%i:%s') AS 'FECHA CONVERTIDA' FROM caso
El anterior código ejecutado nos arroja algo parecido a lo siguiente: