Je me demandais si quelqu'un pouvait aider avec certains Postgres. J'ai une table qui a une colonne appelée mydate
qui est un type de date postgres. Je veux faire quelque chose comme:
SELECT * FROM MyTable WHERE mydate > [Today-1year]
Je n'ai jamais utilisé Postgres auparavant et je suis sûr que j'ai juste besoin de connaître le nom de certaines fonctions - je chercherai volontiers la référence moi-même. Est-ce que quelqu'un peut-il me montrer la bonne direction?
Merci!
sql
postgresql
Joseph
la source
la source
Réponses:
Si vous ne vous préoccupez que la date et pas le temps, substitut
current_date
pournow()
la source
now()
s'agit d'un horodatage, cette plage n'inclura donc qu'une partie de la journée d'il y a exactement un an et une partie de la journée d'aujourd'hui. Si vous souhaitez filtrer sur des journées complètes,now()::date
lancez le casting comme l'a suggéré Alex Howansky.current_date
au lieu denow()
Je pense que cela le fera:
la source
interval '1 year'
, cela ne respectera pas les années bissextiles. Cela ne vous concerne peut-être pas, mais si tel est le cas, utilisez ma réponse.now()
renvoie un horodatage, donc après la soustraction'1 day'
, vous vous retrouvez avec un horodatage qui filtrera probablement une partie de la journée que vous souhaitez interroger. La plupart des gens veulent filtrer sur une seule journée complète, et donc utilisernow()::date
ouCURRENT_DATE
est nécessaire.Cela devrait vous donner la date actuelle moins 1 an:
la source
Vous pouvez également vérifier en utilisant la
age()
fonctionselect * from mytable where age( mydate, now() ) > '1 year';
age()
wil renvoie un intervalle.Par exemple
age( '2015-09-22', now() )
retournera-1 years -7 days -10:56:18.274131
Voir la documentation postgresql
la source
age()
s'agit d'une fonction PostgreSQL uniquement (05/10/2018)