簡體   English   中英

在Ruby on Rails中減去數據表的2個字段

[英]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_startdate_end之間的時間差。

如何找到所有相同類型活動的時差?

您可以使用SQL的DATEDIFF函數查找每個日期值之間的天數。 然后,您可以使用ActiveRecordaverage方法找出中位數/平均天數。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM