Me preguntaba si alguien podría ayudar con algunos Postgres. Tengo una tabla que tiene una columna llamada mydate
que 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_date
denow()
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()::date
envía el contenido como sugirió Alex Howansky.current_date
lugar 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()::date
oCURRENT_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.274131
Ver documentación de postgresql
fuente
age()
es una función solo de PostgreSQL (2018-10-05)