我正在尝试设置自动事件倒计时。我想做的是使用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个小时。
我知道我错过了一些非常愚蠢的东西,但是你能提供的任何帮助都将不胜感激。
答案 0 :(得分:2)
尝试(我没有测试过):
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