Solución:
@Nicolai tiene razón sobre la conversión y por qué la condición es falsa para cualquier dato. Supongo que prefiere el primer formulario porque desea evitar la manipulación de la fecha en la cadena de entrada, ¿correcto? no necesitas tener miedo:
SELECT *
FROM table
WHERE update_date >= '2013-05-03'::date
AND update_date < ('2013-05-03'::date + '1 day'::interval);
Cuando comparas update_date >= '2013-05-03'
postgres lanza valores al mismo tipo para comparar valores. Entonces, su ‘2013-05-03’ se cambió a ‘2013-05-03 00:00:00’.
Entonces, para update_date = “2013-05-03 14:45:00” su expresión será la siguiente:
'2013-05-03 14:45:00' >= '2013-05-03 00:00:00' AND '2013-05-03 14:45:00' <= '2013-05-03 00:00:00'
Esto es siempre false
Para resolver este problema, envíe update_date a date
:
select * from table where update_date::date >= '2013-05-03' AND update_date::date <= '2013-05-03' -> Will return result
Utilizar el range
escribe. Si el usuario ingresa una fecha:
select *
from table
where
update_date
<@
tsrange('2013-05-03', '2013-05-03'::date + 1, '[)');
Si el usuario ingresa marcas de tiempo, entonces no necesita el ::date + 1
parte
http://www.postgresql.org/docs/9.2/static/rangetypes.html
http://www.postgresql.org/docs/9.2/static/functions-range.html