我在ruby中有一个需求,我想获取当前月份数据库中的所有数据。然而,有一个陷阱。我想根据计划开始数据获取当前月份的数据。
Ex:
1. My plan is started on 5th Oct 2022.
2. Let say, today's date is 3rd Dec 2022. I would want to fetch records from 5th Nov to 3rd Dec.
3. Let say, today's date is 15th Dec 2022. I would like to fetch records of current cycle that is from 5th Dec till today.
可能有很多种情况,但我的想法是根据当前月份的周期开始日期获取当前月份的记录。
由于我是ruby的新手,有人能告诉我如何使用DateTime或其他相关方法吗?任何帮助都将不胜感激。
型号:
class Customer
include Mongoid::Document
include Mongoid::Timestamps
include SimpleEnum::Mongoid
field :topic, type: String # This field is to store title/topic
field :external_uuid, type: String # This represents unique ID
field :start_time, type: DateTime
field :duration, type: Integer
field :created_at, type: DateTime
field :random, type: Float, default: -> { rand.round(8) }
as_enum :type,
internal: 'internal',
external: 'external'
end
1条答案
按热度按时间ogq8wdun1#
根据我的理解,计划开始于每个5号,并且您希望时间跨度从
plan_start
到NOW
,您可以使用以下内容获得开始日期今天我们得到一个输出
现在,假设您要查找的日期位于
start_time
列中,即类型为DateTime
,您只需查询:当然,
created_at
也可以工作,因为本列提供了所需的信息...end_of_day
的可用性取决于Rails version,但如上所述手动增加应该很容易...如果您只想使用
现在,我将它作为静态方法添加到
Customer
模型类中此方法假设没有“将来”事件,因此它将获取任何日期的完整月份。如果plan_month已经结束,则它将获取完整数据。如果是当前plan_month,则我们获取截至今天的所有数据(因为不存在更新的条目)。
这里的
Customer::PLAN_START_DAY
是一个常量,如果计划开始是单独的(每个用户、类型、项目......),您需要从相应的记录中获取它,并使用上面介绍的#day
方法提取日期。你现在可以
或任何适用的日期,并获得匹配的记录数。