选择时间总和列的位置和整数列小于current_time

时间:2017-10-28 22:23:47

标签: ruby-on-rails postgresql ruby-on-rails-4

我有两列持续时间(整数)和start_time(时间)。

我必须选择start_time和duration的总和大于current_time

像这样的东西 -

Availability.where("start_time + duration < current_time")
这该怎么做?我在Ruby-on-Rails中使用Postgres

1 个答案:

答案 0 :(得分:3)

要向integer添加time,您可能希望通过指定单位和广告投放将integer转换为interval。如果duration在几分钟内,那么:

start_time + (duration || ' minutes')::interval > current_time

如果duration是秒,那么:

start_time + (duration || ' seconds')::interval > current_time

请注意||是SQL中的字符串连接运算符。

您可以将其中一个放入where来电:

Availability.where("start_time + (duration || ' seconds')::interval > current_time")

请记住,'23:00'::time + '2 hours'::interval01:00:00(即time在午夜环绕),因此您可能需要根据数据的外观和所包含的内容添加日期组件具体需要是。