使用两个日期列Rails的相同差异计算记录

时间:2017-07-05 05:34:13

标签: ruby-on-rails postgresql

只是想问一下使用rails我的问题的查询是什么,我使用PostgreSQL作为数据库,让我们说我有两个列,一个是start_date和end_date,我只想得到当我减去两列时,具有相同天差的记录然后计算它。例如:

start_date | end_date
2017-06-01 | 2017-06-03
2017-07-25 | 2017-07-31
2017-09-05 | 2017-09-07

对于这个例子,我有三个记录,所以当你得到这三个记录的差异时,这将是结果

第一行 2

第二行 6

第三行 2

所以我只需要得到的记录是那两个差异为2天的记录

3 个答案:

答案 0 :(得分:2)

  

DB:PostgreSQL

您可以这样使用:

TableName.select("DATE_PART('day', end_date - start_date) as diff, count(*) as total").group("diff")

答案 1 :(得分:1)

你可以这样做

  

示例:

Model.all.each do |d|
    date = (d.end_date - d.start_date).to_i

    Model.where.not(id: d.id).each do |diff|
    date_diff = (diff.end_date - diff.start_date).to_i

         if (date==date_diff)
            puts date
         end
    end
end

输出取决于您的end_datestart_date日期格式。我假设格式为"2017-06-15 10:00:12"

答案 2 :(得分:0)

尝试代码:

diff = []

Model.select{|d| diff << (u.end_date - u.start_date).to_i }

max = diff.uniq.max_by{ |i| diff.count(i) }

result = Model.where("end_date - start_date = ?", max.to_s)

puts result