ruby-on-rails - 如何使用 postgres 从 ruby 查询中删除周末
问题描述
所以我有这个查询,在那里我找到了超过商家阈值的包裹。我的问题是我不想将周末包括在内。因此,如果我的包裹是在星期五创建的,并且阈值为 2 天。当我在星期一检查它时,这个查询将返回包裹,因为它也计算周末。有没有办法可以排除周末?
Package.joins(:merchant).where(
"packages.created_at + interval '1 day' * merchants.threshold < ?",Time.zone.now
)
我试过了
Package.joins(:merchant).where(
"packages.created_at + interval '1 day' * merchants.threshold < ?",Time.zone.now
).where("extract(dow from packages.created_at) not in (6,0)")
但它不起作用。
有没有一种方法可以让查询只计算周一、周二、周三、周四、周五、周一等工作日,而不是周一、周二、周三、周四、周五、周六、周日和周一
解决方案
您可以通过EXTRACT(ISODOW FROM *)函数排除周末:
Package
.joins(:merchant)
.select("*, packages.created_at + interval '1 day' * merchants.threshold AS datetime")
.where("EXTRACT(ISODOW FROM datetime) NOT IN (6, 7) AND datetime < ?", Time.zone.now)
推荐阅读
- python - 用python打印圣诞树
- java - ArrayList 在 Java 中被清除和覆盖
- php - if else WP is_user_logged_in 不显示正确的内容
- selenium - 我如何在多个值上执行鼠标悬停,这些值可以通过样式属性的值来区分,例如“顶部”和“左”
- python - 使用 python ==$0 抓取网页内容在 beautifulsoup 中不可用
- sql - SQL Regexp 对任何单词组合的模式匹配
- c# - 为什么我已经登录时出现登录页面?
- c++ - 具有两个或多个模板参数的 c++ 赋值运算符
- cmake - 我应该在构建类型的 CMakeLists.txt 中做什么?
- javascript - Javascript:无限滚动后更新文档