Поиск сфинкса по дате и времени - PullRequest
0 голосов
/ 09 августа 2011

У меня есть поле с именем 'selectedOn', которое типа timestamp. Значения, сохраненные в нем, как таковые, например: 2011-08-07 00: 00: 00

Я бы хотел выполнить поиск по этому атрибуту. Например, в MySQL я бы сделал это:

SELECT * FROM `posts` where deleted = 1 and date(createdOn) = '2011-8-4'

Я попытался настроить его в Сфинксе так:

sql_query               = \
        SELECT id, deleted, upvotes, DATE(createdOn) as createdOn, thread_title, first_post \
        FROM posts
sql_attr_bool       = deleted
sql_attr_timestamp  = createdOn

и в php:

  $cl->SetFilter ( "deleted",array(1));
  $cl->SetFilter ( "createdOn", '2011-8-4');
  $result = $cl->Query("");

Но это дает мне ошибку подтверждения утверждения.

Благодарю вас

Ответы [ 2 ]

4 голосов
/ 10 августа 2011

Метка времени атрибута должна иметь целочисленное значение.

В sphinx.conf:

sql_query = select UNIX_TIMESTAMP(createdOn) as createdOn from ...
sql_attr_timestamp = createdOn

и в php:

$cl->SetFilter ( "createdOn", strtotime('2011-8-4'));
$result = $cl->Query("");
1 голос
/ 30 марта 2015

Для новых версий Sphinx вам необходимо использовать SetFilterRange, т.е.:

$createdOn = strtotime('2011-8-4');
$cl->SetFilterRange("createdOn", $createdOn, $createdOn + 86400);
...