运算符不存在:没有时区的时间戳~~ *未知的Ruby代码

时间:2019-06-14 17:05:56

标签: sql ruby-on-rails ruby postgresql

我尝试在搜索时查询数据库中的用户。但是我遇到一个特定的错误,即“操作员不存在:没有时区的时间戳~~ *未知”

在我的数据库中,data_of_birth的记录以以下格式保存。现在确定我所缺少的。下面的代码

field == "dob"
            selected_date = Date.strptime(query, '%Y-%m-%d')
            items = Patient.joins(role: :user).where('users.date_of_birth ILIKE :search', search: "%#{selected_date}%")

以下是出生日期在数据库中的保存方式

 date_of_birth: "1997-03-29 00:00:00"

1 个答案:

答案 0 :(得分:1)

时间戳记以数字形式存储在数据库中,而不是以字符串形式存储,因此无法使用字符串比较(例如ILIKE)。

听起来您正在尝试将时间戳与日期进行匹配。您可以简单地将时间戳转换为该日期。像这样:

WHERE users.date_of_birth::date = '2019-06-14'

根据您的代码,这似乎可以解释为以下内容。

field == "dob"
        selected_date = Date.strptime(query, '%Y-%m-%d')
        items = Patient.joins(role: :user).where('users.date_of_birth::date = :search', search: "%#{selected_date}%")

我对您使用的库不熟悉,但看起来“ :: date”部分可能会遇到占位符功能。您可能需要对此进行修补才能使其正常工作。