我有一个快速的问题,有人可以告诉我如何使我的脚本我有这个表
id name day hour min
1 Test event1 * * 30
2 Test event2 * * 40
3 Test event3 * 14 15
4 Test event4 15 18 10
5 Test event5 21 * 8
*表示将在该分钟内的所有时间运行。exevent5将只在第21天的任何一个小时的第8分钟运行。
我想在我的页面上显示的是下一个事件'name'和'time' ex:
Next Event:
Eventname hour:minut
例如,如果我们在第14天的小时*和分钟32显示下一个事件(在本例中为event2)
如果我们在第14天的第14小时和第6分钟显示event3
如果我们在第21天的小时*和分钟3显示test5
等等
提前感谢。
Try
SELECT id, name,
CASE WHEN day = '*' THEN DAYOFMONTH(NOW()) ELSE day END day,
CASE WHEN hour = '*' THEN HOUR(NOW()) ELSE hour END hour,
CASE WHEN `min` = '*' THEN MINUTE(NOW()) ELSE `min` END `min`
FROM table1 t
WHERE (day >= DAYOFMONTH(NOW()) OR day = '*')
AND (hour >= HOUR(NOW()) OR hour = '*')
AND (`min` >= MINUTE(NOW()) OR `min` = '*')
ORDER BY day = '*', day,
hour = '*', hour,
`min` = '*', `min`
LIMIT 1;
给定您的测试数据集和当前日期时间2016-09-30 02:18:58,输出将是
<>之前| id |名称|日|时|分|----|-------------|-----|------|-----|| 1 |测试事件1 | 30 | 2 | 30 |之前这里是SQLFiddle