【问题标题】:Retrieving data from db: how to consider only date in datetime field?从数据库中检索数据:如何仅考虑日期时间字段中的日期?
【发布时间】:2017-05-25 10:07:48
【问题描述】:

我有一张带有t.string :created_time 列的表格

它包含 UTC 格式的数据(例如2017-05-10T06:30:01+0000

我必须从表中检索具有特定日期但时间无关紧要的记录

date = Date.new(2017,05,10)
nodes = Node.where(created_time: date)
logger.info nodes.count 

这里我有0 计数。如何对created_time 值进行额外处理,以便仅比较 date 部分?

【问题讨论】:

    标签: mysql ruby-on-rails ruby activerecord


    【解决方案1】:

    像这样创建日期范围和查询

    date = Date.new(2017,05,10)
    nodes = Node.where(created_time: date.beginning_of_day..date.end_of_day)
    

    您将获得当天的记录;)

    更新

    为什么created_atstring??

    让我们试试这个,

    Node.where('DATE(nodes.created_time) = ?', date)
    

    【讨论】:

    • 实际上我进行了迁移以将字符串列转换为日期时间。然后我使用了第一个选项
    【解决方案2】:

    像这样从mysql表中选择日期作为日期

    SELECT DATE(date_time_field) FROM `yourtable`;
    

    【讨论】:

    • 不知道,如何在 ruby​​ 中从 mysql 中获取数据?
    • nodes = Node.where(created_time: date) 例如。所以它指出了这个问题
    • 试试这个Node.where(Date(created_time): date)@IlyaBlokh
    • 我明白了,您需要以某种方式告诉 ruby​​ 像这样调用它,或者可能在应用层使用日期格式进行调用,最坏的情况是编写一个返回格式化日期的存储过程.
    猜你喜欢
    • 2019-11-07
    • 1970-01-01
    • 2013-12-22
    • 2015-07-13
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 2014-09-28
    • 2020-06-02
    相关资源
    最近更新 更多