PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

PostgreSQL как да свържете стойността на интервала '2 дни'

Част от проблема е, че стандартният SQL израз за интервали цитира числото, но не и ключовите думи. Така че трябва да внимавате.

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

В PostgreSQL цитирането като „2 дни“ и „2 дни“ също работи. Така че може да си помислите, че '2' || „дни“ би било еквивалентно, но не е.

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

Решението, както каза A.H., е да изведете резултантния низ като интервал.

Можете също да използвате променлива вместо 2. Това генерира календар за 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;

Използвам това окончателно прехвърляне към днешна дата, защото дата + интервал връща времева марка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL date() с часова зона

  2. PostgreSQL:подобряване на производителността на pg_dump, pg_restore

  3. Буфери (кръг) в PostGIS

  4. Извличане на всички привилегии на обект за конкретна роля

  5. Дали SELECT или INSERT във функция е склонна към условия на състезание?