在查询中执行日期操作

时间:2012-01-04 15:42:08

标签: mysql sql ruby-on-rails sqlite

我的数据库表包含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)

2 个答案:

答案 0 :(得分:1)

从技术上讲,是的,你可以按照你的方式去做,但是你必须使用特定于数据库引擎的日期时间函数(你没有指定)

答案 1 :(得分:-1)

如果您使用的是ms-sql-server,请将时间转换为浮点数,它的基数为1.0 = 1天。

选择* 来自你的表格 其中(CONVERT(FLOAT,start_time)+持续时间/ 24.0)&lt; CONVERT(FLOAT,GETDATE())

应该得到你想要的东西。