Там в два подхода здесь ... Sphinx имеет метку времени (DateTime) тип данных для атрибутов, так что вы можете использовать это:
has "CONVERT(model.value, DATETIME)", as: :value_as_date, type: :timestamp
Или может быть лучше использовать целое число, представляющее дату (поскольку это звучит так, как будто вы не указали временной аспект), извлекая дату из строки и затем преобразовывая значение% Y% m% d в целое число (обратите внимание, в формате даты нет дефиса).
has "... more complex SQL snippet ...", as: :value_as_date, type: :integer
В этой ситуации, вы бы тогда нужно конвертировать любые даты для фильтров в целые числа одного и того же формата, а также.
Все это в стороне: вы хотите иметь что-то в ваших фрагментах SQL, который обрабатывает ситуации, когда ваш value
столбец содержит что-то других чем дата. Или, возможно, стоит перевести эти значения даты в отдельный столбец, чтобы иметь более согласованные данные? (Легко предположить, не зная полного контекста вашего приложения, я знаю.)
Хорошо, ваше первое решение работает, потому что тип «timestamp» вместо «integer». Почему в этом случае не работает целое число? – Jonathan
Если вы хотите, чтобы это было целое число, у вас должно получиться целое число SQL: – pat
Право. Я думал, что Сфинкс всегда переводил его в целое ... Спасибо. – Jonathan