我的数据库表包含start_time
(类型date time
)和duration
(类型integer
,表示小时数)。
我想执行一个查询,查找start_time + duration
之前Time.now
所有的记录。
我可以在一个查询中运行添加操作和比较操作吗?或者我首先需要阅读记录,将其转换为rails并在那里进行比较?
伪代码如下:
@surveys = Survey.find_by_sql("select * from surveys where start_time + duration < :now", :now => Time.now)
答案 0 :(得分:1)
从技术上讲,是的,你可以按照你的方式去做,但是你必须使用特定于数据库引擎的日期时间函数(你没有指定)
答案 1 :(得分:-1)
如果您使用的是ms-sql-server,请将时间转换为浮点数,它的基数为1.0 = 1天。
选择* 来自你的表格 其中(CONVERT(FLOAT,start_time)+持续时间/ 24.0)&lt; CONVERT(FLOAT,GETDATE())
应该得到你想要的东西。