¿Por qué la siguiente consulta devuelve false ?
SELECT ('00:00:00'::TIME) = ('24:00:00'::TIME) AS "time", ('00:00:00'::TIMETZ) = ('24:00:00'::TIMETZ) AS "timetz"Resultado:
+-------+--------+ | time | timetz | +-------+--------+ | false | false | +-------+--------+¡Mientras que el resultado de la siguiente consulta es el mismo!
SELECT ('00:00:00'::TIME) AS "time1", ('24:00:00'::TIME) AS "time2", ('00:00:00'::TIMETZ) AS "timetz1" , ('24:00:00'::TIMETZ) AS "timetz2"Resultado:
+----------+----------+------------------------+------------------------+ | time1 | time2 | timetz1 | timetz2 | +----------+----------+------------------------+------------------------+ | 00:00:00 | 00:00:00 | 00:00:00.000000 +00:00 | 00:00:00.000000 +00:00 | +----------+----------+------------------------+------------------------+ ¿Cuál es la diferencia entre 00:00:00 y 24:00:00 en postgres?
El tipo de time de Postgres se define para tener un rango de '00:00:00' a '24:00:00' , inclusive en ambos extremos. Para ver por qué los dos puntos finales no son iguales, considere:
SELECT '00:00:00'::time AS start, '24:00:00'::time AS end; Para el valor final, veo 1.00:00:00 , al contrario de lo que ves, lo que indica que 24 horas es en realidad un día, con cero horas, minutos y segundos.