簡體   English   中英

Rails:在數據庫中搜索部分日期時間

[英]Rails: Search DB for part of datetime

我有個問題。 在我的應用程序中,我有一個包含數據的列表。 此數據包括 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 首先將給定的輸入字符串格式化為日期時間格式,但我不能這樣做,它崩潰了。

一定有辦法讓它正常工作嗎?

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] != ''

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM