使用两个列值进行查询以创建范围

时间:2011-10-21 22:42:43

标签: sql postgresql

我有一个表,其中包含一个开始时间时间戳列和一个表示分钟的长度整数列。我希望能够做到这样的事情:

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

但这不起作用。有没有办法从两列值中获取新的时间戳?

我正在运行postgresql的8.3版本

2 个答案:

答案 0 :(得分:2)

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

注释

  • 只需将您的integer间隔1分钟,然后将其添加到timestamp
  • timestamptimestamp进行比较要快一些。 date必须投放到timestamp(自动)。

答案 1 :(得分:1)

您需要将t.length投射为character然后追加它......试试这个吗?

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