我想使用 Rails ActiveRecord 计算同一行中两个日期时间字段之间的时间。两个日期时间之间的差异可能是几秒到几小时,并且可能跨越午夜。代表差异的秒数将是花花公子。
我同时使用 sqlite 和 postgress。
玩sqlite,下面只给出0进行计算。 (“solved_at”和“started_at”都是“datetime”类型,并且“solved_at”晚于“started_at”)
SELECT (datetime(solved_at) - datetime(started_at)) FROM "schedules";
最佳答案
像这样:
dur_sql = "strftime('%s',solved_at) - strftime('%s',started_at)" unless Rails.env.production? # sqlite in dev and test modes
dur_sql = "extract( epoch from solved_at - started_at)" if Rails.env.production? # heroku with postgres
select_clause = "count(*) as count, env, case_type, date(started_at) as started_at_date, " + "AVG(#{dur_sql}) as avg_dur, MIN(#{dur_sql}) as min_dur, MAX(#{dur_sql}) as max_dur"
group_clause = "env, case_type, date(started_at)"
where_clause = ...
grouped_stuff = Schedule.select( select_clause ).where( where_clause ).group( group_clause )
关于sql - 计算两个日期时间之间的时间 - ActiveRecord/SQL/Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9443214/