Me preguntaba si alguien podría ayudar con algunos Postgres. Tengo una tabla que tiene una columna llamada mydateque es un tipo de fecha de postgres. Quiero hacer algo como:
SELECT * FROM MyTable WHERE mydate > [Today-1year]
Nunca antes había usado Postgres y estoy seguro de que solo necesito saber el nombre de algunas funciones; con gusto buscaré la referencia yo mismo. ¿Alguien puede señalarme en la dirección correcta?
¡Gracias!
sql
postgresql
Joseph
fuente
fuente

Respuestas:
Si sólo se preocupan por la fecha y no es el momento, el sustituto
current_datedenow()fuente
now()es una marca de tiempo, por lo que este rango también incluirá solo parte del día de hace exactamente un año y parte del día de hoy. Si quieres filtrar por días completos,now()::dateenvía el contenido como sugirió Alex Howansky.current_datelugar denow()Creo que esto lo hará:
fuente
interval '1 year', a diferencia de esto, no respetará los años bisiestos. Puede que eso no sea una preocupación suya, pero si lo es, use mi respuesta.now()devuelve una marca de tiempo, por lo que después de restar'1 day', terminas con una marca de tiempo que probablemente filtrará parte del día que estás interesado en consultar. La mayoría de la gente quiere filtrar en un solo día completo, por lo que es necesario usarnow()::dateoCURRENT_DATE.Esto debería darle la fecha actual menos 1 año:
fuente
También puede verificar usando la
age()funciónselect * from mytable where age( mydate, now() ) > '1 year';age()Devolveré un intervalo.Por ejemplo
age( '2015-09-22', now() )volverá-1 years -7 days -10:56:18.274131Ver documentación de postgresql
fuente
age()es una función solo de PostgreSQL (2018-10-05)