首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按分组日期范围进行MySQL排序

问按分组日期范围进行MySQL排序
EN

Stack Overflow用户
提问于 2017-01-13 03:41:43
回答 1查看 18关注 0票数 0

我有一个具有以下四个作用域的模型:

代码语言:javascript
复制
scope :active, -> { where("start_at <= '#{Time.now.utc}' AND end_at > '#{Time.now.utc}'") }
scope :ended, -> { where("end_at < '#{Time.now.utc}'") }
scope :coming_soon, -> { where("start_at > '#{Time.now.utc}' AND start_at < '#{Time.now.utc+6.hours}'") }

我希望能够做一些类似的事情(伪代码,只是试着给出一个想法):

代码语言:javascript
复制
Model.all.order(active, coming_soon, ended)

结果将是该表中的所有行,首先按满足active约束的行排序,然后是满足coming_soon约束的行,最后是满足ended约束的所有行。

EN

回答 1

Stack Overflow用户

发布于 2017-01-13 04:32:01

我添加了以下作用域,它似乎解决了我的问题:

代码语言:javascript
复制
scope :time_sorted, -> { 
    select("events.*, CASE 
      WHEN start_at <= '#{Time.now.utc}' AND end_at > '#{Time.now.utc}' THEN 1
      WHEN end_at < '#{Time.now.utc}' THEN 2
      WHEN start_at > '#{Time.now.utc}' AND start_at < '#{Time.now.utc+6.hours}' THEN 3 ELSE 4
      END AS formula")
    .order("formula ASC")
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41621607

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档