Запрос с использованием двух значений столбца для создания диапазона

#sql #postgresql

#sql #postgresql

Вопрос:

У меня есть таблица со столбцом метки времени начала и столбцом целочисленной длины, представляющим минуты. Я хочу иметь возможность делать что-то вроде этого:

 SELECT * FROM table t 
    WHERE t.start_time   interval 't.length minutes' < '2011-10-21';
  

Но это не работает. Есть ли какой-либо способ получить новую временную метку из двух значений столбца?

Я использую версию 8.3 postgresql

Ответ №1:

 SELECT *
FROM   table 
WHERE  (start_time   interval '1 min' * length_minutes) < '2011-10-21 0:0'::timestamp;
  

Примечания

  • Просто умножьте ваше значение integer на интервалы в 1 минуту и добавьте его к timestamp .
  • Немного быстрее сравнивать timestamp с timestamp . date Должно было бы быть приведено к timestamp (автоматически).

Ответ №2:

Вам нужно привести t.length как character , а затем добавить его … попробуйте это вместо этого?

 SELECT * 
FROM table t 
WHERE 
    t.start_time 
      cast(cast(t.length as character varying) || ' minutes' as interval) 
    < '2011-10-21';