2010-10-13 21 views
47

Zastanawiało się, czy ktoś może pomóc w niektórych Postgres. Mam tabelę, która ma kolumnę o nazwie mydate, która jest typem daty postgres. Chcę zrobić coś takiego:PostgreSQL, sprawdzanie daty w stosunku do "dzisiaj"

SELECT * FROM MyTable WHERE mydate > [Today-1year] 

nigdy nie używałem PostgreSQL przed i jestem pewien, że wystarczy znać nazwę jakiegoś functions- będę chętnie wyszukują odniesienie się. Czy ktoś może wskazać mi właściwy kierunek?

Dzięki!

Odpowiedz

90
select * from mytable where mydate > now() - interval '1 year'; 
+1

to powinno być prawidłowe. –

+0

To jest idealne! Dzięki – JustGage

44

Myślę, że będzie to zrobić:

SELECT * FROM MyTable WHERE mydate > now()::date - 365; 
+6

Należy zauważyć, że w przeciwieństwie do 'przedziału„1 year'', to nie będzie szanować lata przestępne. To może nie być twoja sprawa, ale jeśli tak, użyj mojej odpowiedzi. –

+3

now() :: date == CURRENT_DATE –

5

To powinno dać aktualną datę minus 1 roku:

select now() - interval '1 year'; 
1

Państwo mogli również sprawdzić za pomocą age() funkcję

select * from mytable where age(mydate, now()) > '1 year';

age() wil zwrócić interwał.

Na przykład age('2015-09-22', now()) powróci -1 years -7 days -10:56:18.274131

Zobacz postgresql documentation

Powiązane problemy