如何编写仅查看日期时间字段的时间部分的 activerecord 查询?

2023-12-28

是否可以执行仅查看日期时间字段的时间部分的 activerecord 查询?

e.g. Battle.where('start_time < ? and start_time > ?','12:00','06:00')

查找早上 6 点到中午 12 点之间开始的所有战斗,无论发生在哪一天?在此示例中,start_time 定义为日期时间。


唯一的方法是使用 SQL 函数,如果你使用 MySQL,你可以这样做:

Battle.where( 'HOUR( start_time ) >= ? AND HOUR( start_time ) <= ?', 12, 6 )

但这是非常低效的,并且总是会产生全表扫描你肯定不希望这样。

最好的解决方案是在战斗模型中添加仅包含小时值的列,对它们进行索引并直接查询它们,如下所示:

Battle.where( 'start_time_hour >= ? start_time_hour <= ?', 12, 6 )

只需添加一个 before_save 回调,在根据 start_time 属性保存战斗模型之前设置此值。

EDIT

顺便说一句,如果您使用 PostgreSQL,它能够在函数结果上创建索引,因此,如果您不介意必须坚持使用 PostgreSQL,您可以只使用 SQL 函数。在你问之前,不,我不知道它是如何工作的,我只知道数据库允许你这样做,而这在 MySQL 上不可用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何编写仅查看日期时间字段的时间部分的 activerecord 查询? 的相关文章

随机推荐

  • Git 快进 VS 无快进合并

    Git merge 允许我们执行快进和非快进分支合并 有什么想法何时使用快进合并以及何时不使用快进合并吗 The no ff当您想要清楚地了解功能分支时 选项非常有用 因此 即使在此期间没有进行任何提交 FF 也是可能的 有时您仍然希望主线
  • AWS CloudFormation 用户数据中的 Crontab

    使用 AWS CloudFormation Userdata 时如何设置 crontab 我正在设置 crontab l echo 0 wget O q http www example com cron php crontab 但 cro
  • 如何将“=”附加到字符串

    我正在尝试添加 在我的数组的末尾 然后通过附加 0 来结束它 这就是我分配空间的方式 char postExpr malloc sizeof char MAX LEN 我已经尝试了很多方法 但仍然无法在字符串末尾附加字符 其他每个字符都可以
  • QT C++ 的新手问题 - Qimage 不起作用?

    我正在尝试执行控制台应用程序来从图像中读取像素 include
  • R/Shiny 图不显示在浏览器中

    我最近开始玩Shiny 我试图写一些东西来证明中心极限定理 我的代码如下 ui R ui R file code library shiny shinyUI pageWithSidebar headerPanel Central Limit
  • MYSQL 查询左连接显示一张表中的所有数据

    SELECT A CODE B NOTE C NUMBER FROM A LEFT JOIN B ON A CODE B CODE LEFT JOIN C ON A CODE C NUMBER WHERE C ID B ID 需要显示 3
  • Django 1.5.1 运行测试时出现“ImportError:没有名为 urls 的模块”

    我已经开始使用 Django 1 5 项目 我有以下配置文件应用程序的 URL 视图和测试 When I browse localhost 8000 profiles it works just fine 但是当我对配置文件应用程序运行测试
  • 消失 SmartTabLayout pageViewer 内容

    我正在尝试从这里使用 SmartTabLayouthttps github com ogaclejapan SmartTabLayout https github com ogaclejapan SmartTabLayout 我有一个抽屉
  • ASP.NET MVC - Html.TextBox - 未通过 ViewData 字典设置值

    我在页面上有一个带有 Html TextBox 控件的搜索框 实际上是在部分视图中 但不确定是否相关 该操作方法将 query 作为参数 我编辑该值以清理传入的字符串 public ActionResult SearchQuery stri
  • 如何静态链接 C# 类库的库?

    我正在使用 microsoft 提供的 Dlls 在 c 中创建一个类库 现在我想将 Microsoft 提供的库静态添加到 My Dll 中 我该如何执行此操作 我只是添加了对 Microsoft 提供的 Dll 的引用并创建了 My D
  • 包含非 ASCII 字符的批处理文件

    我需要链接到批处理脚本中包含字符 的文件夹 不过 当我运行脚本时 我遇到了麻烦 命令提示符会误读非 ASCII 字符 我尝试将文件保存为 ANSI 和 Unicode 我运行的是 Windows 7 这是一个最小的例子 echo l 没有使
  • Java:如何输出所有可能的二进制组合(256个不同的序列)?

    我需要创建一个函数来输出所有可能的二进制组合 2 8 256 个不同的 8 位序列 我真的很难过这个 我必须使用嵌套循环来完成此操作 并且不知道如何进行 以下是我到目前为止所尝试的 有人告诉我 我可以使用 8 个嵌套循环来编写这个程序 每个
  • 如何在 Google Cloud Functions 上运行 C++ 文件?

    据我所知 Google Cloud Functions 只允许您部署 NodeJs 或 Python 脚本 问题 我怎样才能部署一个简单的Hello World cpp谷歌云功能 例如 编写一个 hello world HTTP 函数 有哪
  • 如何按时间而不是按大小对 shell 脚本输入进行分块?

    在 bash 脚本中 我使用多生产者单消费者模式 生产者是将行写入 fifo 的后台进程 通过 GNU Parallel 消费者从 fifo 读取所有行 然后排序 过滤并将格式化结果打印到 stdout 然而 可能需要很长时间才能获得完整的
  • cURL:通过代理进行 https

    我需要向 https URL 发出 cURL 请求 但我还必须通过代理 这样做有什么问题吗 我在使用curl和php执行此操作时遇到了很多麻烦 因此我尝试在Python中使用urllib2执行此操作 结果发现urllib2在通过代理时无法P
  • AVAssetReader,如何使用流而不是文件?

    AVAssetReader 非常棒 但我只能看到如何将它与本地资产 文件或我猜的组合一起使用 So assetReader try AVAssetReader asset self asset assetReader addOutput r
  • Spring-boot jersey maven 无法运行 war 文件

    我们正在创建一个 spring boot jersey 应用程序 现在我们要创建可执行的 war 文件 问题是当我运行它时应用程序运行良好 mvn spring boot run 但是当我尝试将其打包为 war 并使用 java jar A
  • 如何在文档中找到 to_string 可用于 &str?

    我试图了解发生了什么事读一行 https stackoverflow com questions 27972686 read only one line to string in one line of code 但我找不到有一个方法to
  • WPF - 即时修改图像颜色 (C#)

    是否可以通过代码 甚至使用模板 修改 WPF 中图像的颜色 假设我有一个图像需要应用于图块 默认情况下它具有白色前景色和透明背景 类似于下面的 PNG 它就在这里 我不想添加不同的图像 具有不同的颜色 而是想操纵白色 并将其更改为黑色 如果
  • 如何编写仅查看日期时间字段的时间部分的 activerecord 查询?

    是否可以执行仅查看日期时间字段的时间部分的 activerecord 查询 e g Battle where start time lt and start time gt 12 00 06 00 查找早上 6 点到中午 12 点之间开始的