我有两列持续时间(整数)和start_time(时间)。
我必须选择start_time和duration的总和大于current_time
。
像这样的东西 -
Availability.where("start_time + duration < current_time")
这该怎么做?我在Ruby-on-Rails中使用Postgres
答案 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'::interval
是01:00:00
(即time
在午夜环绕),因此您可能需要根据数据的外观和所包含的内容添加日期组件具体需要是。