我想检查是否有空白期间没有帖子。
我是这样写的:Post.all.pluck(:date).sort.each_cons(2).any?{|i,j| (i - j).abs > 7 }
有更好的实施吗?
我不擅长数据库功能。 Postgresql
中是否有函数。
答案 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))