选择时间列和整数列的总和小于current_time
问题描述:
我有两列duration(整数)和start_time(时间)。选择时间列和整数列的总和小于current_time
我必须选择start_time和duration的总和大于current_time
。
这样的事情 -
Availability.where("start_time + duration < current_time")
如何做到这一点?我使用的是Postgres中的Ruby-on-Rails的
答
要将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
S环绕四周在午夜),所以你可能需要包括取决于日期组件是什么数据看起来像什么,具体需求是什么。