Problema con atributo DATE al que se le graba hora en GeneXus

 Hoy voy a hablar de un error tonto, que no es muy fácil de detectar. 

Los usuarios me reportaban que tenían diferencias en un sistema cuando sacan los reportes por mes, a que si los sacaban los reportes con rangos de varios meses. 

Tengo una tabla que tiene la siguiente estructura:

Docs
DocID
DocDate
...

Esa tabla la cargo con un servicio usando un  BC de datos que vienen de otro sistema, que no manejo yo. 

En el campo DocDate, el otro sistema esta grabando algunos registros con fecha hora (en particular llegan con la fecha correcta, pero además traen la hora 21:00:00.  Solo algunos llegan con horas. 

Queda grabado en la base de datos un campo DATE de GX, pero con una fecha y hora. 

Tengo un proceso, que selecciona los registros de un mes, con un rango 2024-02-01 al 2024-02-29. 

Como piensa que todos los registros solo tienen DATE, no esta seleccionando todos los registros del ultimo dia, que tenga una hora. 


El mejor aprendizaje que saco de todo esto, es que NO HAY QUE CONFIAR EN LOS DATOS QUE VIENEN DE OTROS SISTEMAS, Y HAY QUE VALIDARLOS. 

Estaba convencido que usando una transacción como business component, y un campo DATE lo grababa en la base de datos sin la parte de la hora, pero la practica me enseña que debo sacar la hora en forma explicita en los campos DATE. 

En este caso hice algo así, a pesar que ambas variables están definidas como DATE:

&BC.DocDate = &VariableDATE.ToDate()




Comentarios

Entradas más populares de este blog

La nefasta influencia del golero de Cacho Bochinche en el fútbol uruguayo

Aplicación monolítica o distribuida?

Funcionalidades de GeneXus que vale la pena conocer: DATE Constants.