如何查看帖子是否有空白期

时间:2017-03-24 03:05:57

标签: ruby-on-rails postgresql

我想检查是否有空白期间没有帖子。

我是这样写的:

Post.all.pluck(:date).sort.each_cons(2).any?{|i,j| (i - j).abs > 7 }

有更好的实施吗? 我不擅长数据库功能。 Postgresql中是否有函数。

1 个答案:

答案 0 :(得分:0)

虽然价格昂贵,但您可以进行交叉连接(实际上是笛卡尔连接)并直接在数据库中进行计算。此外,这里我假设列是Datetime字段而不是Date。

对于MySQL

Post.
  joins('CROSS JOIN posts p2').
  where('TIMESTAMPDIFF(DAY, date, p2.date) > 7').
  present?

请注意,如果您想要7天的时间段,则需要将差异转换为天数。

对于Postgres ,请查看postgres datetime docs处的相关功能。你可能需要这样做:

EXTRACT(DAY FROM ABS(d1 - d2))