请帮帮我。我有一些在线和离线字段的表=>当人上线和离线时。如果此人仍在线,则离线字段等于NULL,并且仅在人员离线后才会更新。
我需要计算人员的持续时间,但是使用sql。 我有两个范围:
scope :since, lambda { |date| where(["online >= ?", date.to_time.midnight]) }
scope :upto, lambda { |date| where(["online <= ?", date.to_time.end_of_day]) }
帮助我过滤人物记录。 如何在应用所需范围后正确计算持续时间? (或其他一些陈述)。 在activerecord中是否存在类似IF NULL的内容,如果它确实存在,我该如何使用它呢?
谢谢!
答案 0 :(得分:1)
您可以再次使用sum
功能。
Model.where(...condition....).sum("IFNULL(offline, CURRENT_TIMESTAMP)-online")
我认为在范围内你可以简单地添加我在本例中使用的总和方法