【问题标题】:select where sum of time column & integer column is less than current_time选择时间列和整数列之和小于 current_time 的位置
【发布时间】:2017-10-28 22:23:47
【问题描述】:

我有两列 duration(integer) 和 start_time(time)。

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

类似的东西 -

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

【问题讨论】:

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


    【解决方案1】:

    要将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(即 times 在午夜环绕),因此您可能需要包含日期组件,具体取决于数据的外观和具体需求。

    【讨论】:

      猜你喜欢
      • 2015-03-14
      • 2013-10-18
      • 2012-10-04
      • 2018-04-01
      • 2011-02-20
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多