sql - 计算两个日期时间之间的时间 - ActiveRecord/SQL/Heroku

标签 sql ruby-on-rails ruby activerecord heroku

我想使用 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/

相关文章:

ruby - Ruby 中 |= 的复杂性

sql - Unicode - VARCHAR 和 NVARCHAR

sql - Postgres : delete duplicate rows with bi-directional relationship

mysql - 在 rails 中创建 "database"

ruby-on-rails - 保存前从事件存储附件中读取

ruby-on-rails - 无法在 Rails 3.2.14、Ruby 2.1.0 的事件记录中添加键、值对

SQLite 事务不工作

php - 撇号的问题

ruby-on-rails - Rails 4 - 设计 Omniauth 并允许单个用户使用多种社交媒体策略进行身份验证

ruby-on-rails - RailsAdmin for Rails3(带设计)-仅用于管理 View ?