[英]Subtract 2 fields of a data table in Ruby on Rails
我有以下問題。
我有一張桌子叫Activity。
在此表中,有3個字段,一個是date_start ,第二個是date_end ,第三個是activity_type ,它們對應於活動開始和結束的日期以及活動的類型,例如身體活動和飲食。
我想找到一個activity_type持續的中間時間段。
例如:
Activity.where(activity_type: "Eating healthy")
所以我想在這個問題中應用一個sum語句,其中date_start和date_end之間的時間差。
如何找到所有相同類型活動的時差?
您可以使用SQL的DATEDIFF
函數查找每個日期值之間的天數。 然后,您可以使用ActiveRecord
的average
方法找出中位數/平均天數。
condition = {activity_type: "Eating healthy"}
sql_string = "DATEDIFF(day, date_end, date_start)"
Activity.where(condition).average(sql_string) #=> numeric value
您可以通過對行進行分組來獲取所有活動類型的數據,如下所示:
Activity.group(:activity_type).average(sql_string) #=> Hash with numeric values
但這還取決於您使用的數據庫。 例如,SQLite不存在DATEDIFF
函數。 您將必須查找可用於數據庫的適當的日期差函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.