Помогите решить небольшую задачу SQL, PHP

М
На сайте с 08.09.2006
Offline
223
481

Всем привет.

Помогите, пожалуйста, решить одну задачку. Мне кажется решение тривиальное, но не будучи программистом, у меня пока никак не получается.

Суть. Есть сайт Joomla с компонентом eventlist. Есть некоторые события, для которых задается дата и время начала, и при открытие сайта выводится список не состоявшихся еще событий. На текущий момент это происходит таким образом, что при загрузке проверяются даты начала событий, и все события с вчерашними или более старыми датами удаляются. Мне же нужно слегка подправить код, чтобы учитывалось не только дата события, но и время события и соответственно из базы удалялись события дата И время которых старее текущих. Другими словами к проверки просроченности события добавить еще проверку времени.

Вот текущий кусок кода, который как мне кажется и отвечает за работу данной функции:

if ($elsettings->oldevent == 1) {

$query = 'DELETE FROM #__eventlist_events WHERE DATE_SUB(NOW(), INTERVAL 1 DAY) > (IF (enddates <> '.$nulldate.', enddates, dates))';

$db->SetQuery( $query );

$db->Query();

}

пояснения:

enddates - протяженность события (не играет роли, оно всегда нулевое)

dates - только дата начала события в формате Y-m-d.

times - время в формате ЧЧ:ММ (24ч)

В этой выборке не используется поле times которое есть в таблице базы, но оно в этом запросе и сравнение не используется.

Логику текущего кода я понимаю так.. удалить все события старее чем начало текущего дня.

Думаю я бы справился сам, если бы в таблице в одном поле хранилось и дата и время. А так получается, что они в разных полях. В итоге, в левой части текущая дата и время со сдвигом в 1 день назад, а в правой части неравенства только дата события и без учета времени события, которое хранится в отдельном поле times.

Может кто подскажет, как сделать правильное сравнение, куда и как запихнуть этот times чтобы удалялись события с учетом не только даты, но и времени начала события. Ведь все данные для этого есть, остается их только как то правильно подставить в выборку.

---------- Добавлено 24.01.2012 в 11:53 ----------

Проблема решена SQL запрос:

$query = 'DELETE FROM #__eventlist_events WHERE (CURDATE() >= dates AND CURTIME() > times) OR CURDATE() > dates ';

Не бойся неизбежного... Уже не продаю авто морды...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий