#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';