SELECT Table.date FROM Table WHERE date > current_date - 10;
Czy to działa na PostgreSQL?
Odpowiedzi:
Tak, to działa w PostgreSQL (zakładając, że kolumna " date " jest typu danych date
) Dlaczego po prostu tego nie wypróbujesz?
Standardowy format ANSI SQL to:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
Wolę ten format, ponieważ ułatwia czytanie (ale jest taki sam jak current_date - 10
).
interval '10 day'
to składnia Postgres. interval '10' day
jest składnią opartą na standardzie SQL, a także obsługiwaną przez Postgres
10
, a nie9
http://www.postgresql.org/docs/current/static/functions-datetime.html zawiera operatory, których można używać do pracy z datami i godzinami (oraz interwałami).
Więc chcesz
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
Powyższe operatory / funkcje są szczegółowo udokumentowane:
Z moich testów (i dox PostgreSQL ) rozumiem, że cytaty muszą być wykonane inaczej niż inne odpowiedzi, a także powinny zawierać „dzień” w następujący sposób:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10 day';
Zademonstrowano tutaj (powinieneś być w stanie uruchomić to na dowolnej bazie danych Postgres):
SELECT DISTINCT current_date,
current_date - interval '10' day,
current_date - interval '10 days'
FROM pg_language;
Wynik:
2013-03-01 2013-03-01 00:00:00 2013-02-19 00:00:00
Sprawdziłbym typy danych.
current_date ma typ danych "date", 10 to liczba, a Table.date - musisz spojrzeć na swoją tabelę.
możesz użyć między też:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
between
Musi być o najniższej wartości pierwszy, więc to będzie poprawnie wykonane jako SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;