PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PostgreSQL jak połączyć wartość interwału '2 dni'

Częścią problemu jest to, że standardowe wyrażenie SQL dla interwałów cytuje liczbę, ale nie słowa kluczowe. Musisz więc być ostrożny.

select current_date, current_date + interval '2' day;
--
2012-02-21   2012-02-23 00:00:00

W PostgreSQL działa również cytowanie typu „2 dni” i „2 dni”. Możesz więc pomyśleć, że „2” || „dni” byłyby równoważne, ale tak nie jest.

select current_date, current_date + interval '2' || ' days';
--
2012-02-21   2012-02-21 00:00:02 days

Rozwiązaniem, jak powiedział A.H., jest rzucenie ciągu wynikowego jako interwał.

Możesz również użyć zmiennej zamiast 2. Spowoduje to wygenerowanie kalendarza na rok 2012.

-- 0 to 365 is 366 days; 2012 is a leap year.
select ('2012-01-01'::date + (n || ' days')::interval)::date calendar_date
from generate_series(0, 365) n;

Używam tej ostatecznej obsady do tej pory, ponieważ data + interwał zwraca znacznik czasu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamień reprezentację daty postgres w ciąg ISO 8601

  2. Funkcja PostgreSQL zwracająca wiele zestawów wyników

  3. Zaktualizuj wiele kolumn w funkcji wyzwalacza w plpgsql

  4. Uruchomienie skryptu SQL przez psql powoduje błędy składniowe, które nie występują w PgAdmin

  5. Jak uzyskać dzień roku z daty w PostgreSQL?