gpt4 book ai didi

mysql - 查找在特定时间范围内(任何一天)创建的用户

转载 作者:行者123 更新时间:2023-12-01 00:20:43 24 4
gpt4 key购买 nike

为了好玩,我想查看在特定时间范围内(具体来说是凌晨 2 点 - 5 点)创建的用户集(在 Rails 数据库中),但可以是任何一天。它们都有典型的 created_at 字段。我想我知道如何从该字段中提取一个用户的小时数,然后查看它是否在一个范围内——但我如何为所有用户执行此操作?我应该循环遍历它们吗? (即使在我写的时候,这听起来很幼稚)。

最佳答案

Sontyas 回答的第一部分是 Rails 中的简单解决方案。但是,我会将该部分移动到您的类中它自己的位置,以将您的代码与框架进一步分开。

# app/models/user.rb
class User < ActiveRecord::Base
# ...
def self.get_users_created_between(start_time, end_time)
User.where("TIME(created_at) BETWEEN TIME(?) AND TIME(?)", start_time, end_time)
end
# ...
end

然后像这样使用它:

irb> User.get_users_created_between(Time.parse("2pm"), Time.parse("5pm"))

这为您提供了几个好处:

  1. 您可以在整个代码中重复使用它,而不必担心位置或时间范围的语法。
  2. 如果出于某种奇怪的原因,rails 决定为此更改接口(interface),您只需编辑一个方法,而无需在整个项目的上千个地方编写代码。
  3. 如果您觉得 user.rb 变大了,您可以轻松地将这段代码移出 user.rb。也许是一些专用的查找器或查询类。或者像 repository pattern 这样的东西.

PS:时间函数在不同的 DBMS(如 MySQL、Postgresql、MSSQL 等)之间可能会有所不同。我不知道是否有通用的方法可以做到这一点。这个答案是针对 MySQL 的。

关于mysql - 查找在特定时间范围内(任何一天)创建的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28405653/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com