【问题标题】:Rails: Search DB for part of datetimeRails:在数据库中搜索部分日期时间
【发布时间】:2023-01-02 18:29:11
【问题描述】:

我有个问题。在我的应用程序中,我有一个包含数据的列表。此数据包括 datetime_utc 列。还有一个允许用户搜索日期时间字符串的搜索栏,但搜索栏现在需要精确输入,因此例如这些输入返回结果:

2023-01-01 02:00:00
2023-01-01 02:00
2023-01-01 02

只要输入字符串以有效的日期时间格式开头。例如,我想要的是仅查找给定时间,例如:

02:00

这应该返回时间为02:00:00的所有数据作为datetime_utc值。 现在这是我的代码:

data = data.where(datetime_utc: "#{params[:search]}") if params[:search] && params[:search] != ''

我试过这样的事情:

data = data.where("to_char(datetime_utc, 'YYYY-MM-DD HH24:MI:SS') LIKE ?": "%#{params[:search]}%") if params[:search] && params[:search] != ''

但这给了我错误:

PG::UndefinedColumn: ERROR:  column candlesticks.to_char(datetime_utc, 'YYYY-MM-DD HH24:MI:SS') LIKE ? does not exist

所以我知道 Postgres 首先将给定的输入字符串格式化为日期时间格式,但我不能这样做,它会崩溃。

一定有办法让它正常工作吗?

【问题讨论】:

    标签: ruby-on-rails ruby postgresql


    【解决方案1】:

    由于使用的格式不正确,Rails 正在考虑将 "to_char(datetime_utc, 'YYYY-MM-DD HH24:MI:SS') LIKE ?" 作为列名

    您需要将查询更改为(注意 : 已替换为 ,

    data = data.where("to_char(datetime_utc, 'YYYY-MM-DD HH24:MI:SS') LIKE ?", "%#{params[:search]}%") if params[:search] && params[:search] != ''
    

    【讨论】:

      猜你喜欢
      • 2023-03-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-27
      • 2016-08-15
      相关资源
      最近更新 更多