Saltar al contenido

¿Cómo comparar fechas en campos de fecha y hora en Postgresql?

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

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *