оператор не существует: временная метка без часового пояса ~~ * неизвестный код рубина - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь запрашивать пользователей в базе данных, когда я выполняю поиск.Однако я получаю конкретную ошибку: «оператор не существует: временная метка без часового пояса ~~ * unknown»

В моей базе данных запись 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 Ответ

1 голос
/ 14 июня 2019

Метки времени хранятся в базе данных как числа, а не как строки, поэтому использование сравнения строк (например, 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" может работать с функциональностью заполнителя.Возможно, вам придется повозиться с этим, чтобы он заработал.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...