MySQL поиск между датой и временем - PullRequest
1 голос
/ 16 января 2012

Я пытаюсь настроить автоматический отсчет событий.Что я хочу сделать, это использовать MySQL, чтобы заполнить обратный отсчет следующим предстоящим событием.

Если событие происходит в будущем, код покажет «предстоящее событие - обратный отсчет», и если событие происходит в данный моментзатем покажите «событие происходит».

У меня есть такая структура таблицы:

CREATE TABLE jos_eventlist_events (
    id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    catsid INT UNSIGNED,
    dates DATE,
    times TIME,
    enddates DATE,
    endtimes TIME,
    published TINYINT(1),
    title VARCHAR(255)
) Engine=InnoDB;

INSERT INTO jos_eventlist_events
  VALUES 
(1, 6, '2012-01-15', '21:00', '2012-01-15', '22:00', 1, 'Partying'),
(2, 6, '2012-01-15', '23:00', '2012-01-16', '01:00', 1, 'More partying')
;

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

Следующий запрос является отправной точкой для достижения моих целей.

SELECT catsid,id,dates,times,endtimes,published,title 
  FROM jos_eventlist_events 
  WHERE catsid = 6 AND published = 1 
    AND dates && times >= CURDATE() && CURTIME() 
    AND dates && endtimes <= CURDATE() && CURTIME()
  LIMIT 1

Имейте в виду, что мой сервер5 часов по местному времени.

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

1 Ответ

2 голосов
/ 16 января 2012

попробуй (я не проверял):

SELECT catsid,id,dates,times,endtimes,published,title 
  FROM jos_eventlist_events 
  WHERE catsid = 6 AND published = 1
    AND (CONCAT(dates, ' ', times)>= NOW()  
         OR (     CONCAT(dates, ' ', times) < NOW() 
              AND CONCAT(enddates, ' ', endtimes) >= NOW() ) )
  ORDER BY CONCAT(dates, ' ', times)
  LIMIT 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...