TO_DAYS(date1) - TO_DAYS(date2) как считает?

Ergo

Новичок
TO_DAYS(date1) - TO_DAYS(date2) как считает?

Возникла небольшая проблема. Делаю выборку заказов по которым прошли одни сутки с момента ответа менеджера на заказ. В качестве одного из условий выборки стоит:

TO_DAYS(NOW()) - TO_DAYS(first_order_reply)>=1

где first_order_reply дата и время первого ответа менеджера на заказ. В результате в выборку попали все заказы. Т.е. например менеджер ответил 2004-07-25 23:13:59, а я запустил скрипт 2004-07-26 00:30:34 и он сработал, хотя одни сутки еще не прошли.

Или я не понимаю логики этого выражения, или что?
 

lucas

Guest
Наверно, нужно следующее:
Код:
...TO_DAYS(NOW() - first_order_reply) >= 1
 

Ergo

Новичок
lucas
Спасибо :)

-~{}~ 27.07.04 07:52:

lucas
Подожди а почему не сработала моя конструкция. Ведь она тоже ведь правильная в принципе
 

lucas

Guest
Код:
mysql> set @now := to_days('2004-07-26 00:30:34') ;

mysql> set @reply := to_days('2004-07-25 23:13:59') ;

mysql> select @now, @reply, @now - @reply ;
+--------+--------+---------------+
| @now   | @reply | @now - @reply |
+--------+--------+---------------+
| 732153 | 732152 |             1 |
+--------+--------+---------------+

mysql> select @now - @reply >= 1 ;
+--------------------+
| @now - @reply >= 1 |
+--------------------+
|                  [b]1[/b] |
+--------------------+
Или я чего-то недопонимаю, или работать оно должно. :)
 

Ergo

Новичок
lucas
Ясно. В общем работает оно так как должно я уже вижу. Просто мне нужно чтобы работало по другому. Т.е. чтобы запускался скрипт, если прошло 24 часа. В данном случае разница между @now - @reply действительно равна 1, но реально прошло меньше часа.
 

Demiurg

Guest
пишите запросы так, что бы можно было использовать индексы.

first_order_reply < now() + interval 1 days
 
Сверху