MySQL дата / время расчета - PullRequest
1 голос
/ 14 января 2009

В моей таблице MySQL есть столбцы date и time, которые называются start_date и start_time соответственно. Я хочу, чтобы мои пользователи могли настроить отправку напоминаний за X часов до start_time, мин. 1 час и максимум 24 часа.

Я буду запускать CRON-скрипт для отправки этих напоминаний. Прямо сейчас я делаю:

SELECT * FROM auctions WHERE start_date=CURDATE() AND status='0'

Чтобы получить все аукционы, которые начнутся сегодня и еще не начались. У меня вопрос, как я могу выяснить, если время сейчас X часов до start_time, чтобы я мог отправить им напоминание, если это так.

Есть предложения?

Ответы [ 4 ]

4 голосов
/ 14 января 2009

Примерно так:

SELECT col1, col2, col3 
FROM records 
WHERE (records.startDate BETWEEN NOW() AND ADDDATE(NOW(), INTERVAL 9 HOUR)) 
AND (records.status = '0');
2 голосов
/ 14 января 2009

Существует ли какая-то причина, по которой вы не можете просто использовать простое поле метки времени вместо одного для даты и одного для времени. Таким образом, вы можете найти все те, которые начнутся в следующие 5 часов (скажем), выполнив

select * from auctions where start_ts between now() and now() + interval '5 hours';

Примечание: синтаксис интервала немного различается в разных базах данных, и это тот, что для postgresql, поэтому вам, возможно, придется немного изменить его для mysql.

1 голос
/ 15 января 2009

Я на самом деле сделал это до того, как все ответы были отправлены и он работал. Потому что я в срок, я не могу вернуться и изменить его:)

$sql="SELECT HOUR(ADDTIME(CURTIME(),'$hour')) as remindHour, HOUR(CURTIME()) as curHour";
$result=$this->db->query($sql);

extract($result->getAllSingle());

if ($remindHour <=$curHour) {
    // Send reminders
}
0 голосов
/ 14 января 2009

Можете ли вы использовать unixtime, чтобы сэкономить время?

Так как в PHP есть замечательная функция под названием strtotime .

Внутри вы можете сказать. strtotime ("+ 20 часов") и получите unixtime на 20 часов.

Тогда вопрос только в том, какое поле больше другого, если это так, отправьте уведомление.

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