SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 22.08.2012 22:33:40

lexey2006.90
Участник
Зарегистрирован: 01.06.2011
Сообщений: 16

Выполнение sql запроса в зависимости от настоящего времени.

Всем доброго времени суток! Почему не работает вот такой запрос? Т.е. ошибок он не выдает, но и данных нет. Скрипт запускается по крону каждую минуту и нужно сделать так, чтобы в первые 10 минут запись возвращалась каждую минуту, первый час - каждые 10 минут, первые 24 часа - каждый час (в поле creation_date хранится дата в формате mysql):


SELECT refund_transaction_objects.*
FROM payprocessing.refund_transaction_objects
WHERE (refund_transaction_objects.creation_date > NOW() - INTERVAL 10 MINUTE)
OR (refund_transaction_objects.creation_date > NOW() - INTERVAL 1 HOUR AND MOD(MINUTE(NOW()-refund_transaction_objects.creation_date),10) = 0)
OR (refund_transaction_objects.creation_date > NOW() - INTERVAL 24 HOUR AND MOD(MINUTE(NOW()-refund_transaction_objects.creation_date),59) = 0);
 


В свою очередь вот такой запрос выполняется (но в нем уже не точно, что пройдет именно столько времени, сколько нужно):


SELECT refund_transaction_objects.*
FROM payprocessing.refund_transaction_objects
WHERE (refund_transaction_objects.creation_date > NOW() - INTERVAL 10 MINUTE)
OR (refund_transaction_objects.creation_date > NOW() - INTERVAL 1 HOUR AND MOD(MINUTE(NOW()),10) = 0)
OR (refund_transaction_objects.creation_date > NOW() - INTERVAL 24 HOUR AND MOD(MINUTE(NOW()),59) = 0);
 

Неактивен

 

#2 23.08.2012 09:02:34

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: Выполнение sql запроса в зависимости от настоящего времени.

Для разности дат используйте TIMESTAMPDIFF(MINUTE, NOW(),  refund_transaction_objects.creation_date)
http://dev.mysql.com/doc/refman/5.0/en/ … estampdiff

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson