Adelo: On Mon, Dec 16, 2019 at 9:11 PM Adelo <adelo.herr...@gmail.com> wrote: > Tengo una tabla con un campo time without time zone y en una > consulta utilizo ese campo para filtrar. Durante las pruebas y por > error, en un registro se grabó las 00:00:00 y en la consulta me estaba > volviendo loco porque me devuelve que las 00:00:00 es mayor que las > 16:06:00. He modificado el campo a las 00:00:01 y me devuelve > correctamente que es menor que las 16:06:00. > ¿Es normal este comportamiento?
He visto ya varios mensajes que te dicen que uses otro tipo de datos, no entrare en eso. Supongo que usas el tipo time para uno de sus muchos usos legitimos ( para los lectores, "La ventana de mantenimiento diaria es de 01:00UTC a 01:20UTC, las clases de literatura son Lunes y Jueves de 10 a 12", etc.. ). No se si has observado que los campos time admiten dos valores para la medianoche, 0000 y 2400 ( logico, si quieres expresar cosas como las de arriba necesitas ambos ). http://sqlfiddle.com/#!17/9eecb/43330 <<select t, t>'16:00'::time from (values('00:00'::time), ('24:00'::time)) as v(t);>> Puede ser que lo que tuvieras en el campo fuera 24:00 pero al visualizarlo te la estaba jugando? Eso se puede ver de varias formas, p.e. con extract o una resta: http://sqlfiddle.com/#!17/9eecb/43334 <<select t, extract(hours from t), extract(epoch from t), t-'00:00'::time from (values('00:00'::time), ('24:00'::time)) as v(t);>> Me imagino que las rutinas de salida por defecto ponen algo "user friendly" o se reusan entre times y timestamps, y eso puede haberte mordido, metiste "la basura a de bajarse de 23:00 a 24:00", pero al imprimirlo te dice "23:00 a 00:00". Probablemente haya alguna opcion creativa para hacerlo con el to_char, pero no me la se de memoria. FOS.