我有一个简短的问题想请教谁可以告诉我如何制作我的脚本 我有这张表
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
* 表示将在该分钟内始终运行。 Ex event5 仅在第 21 天的任何时间第 8 分钟运行。
我想要在我的页面上显示的是下一个事件“名称”和“时间”例如:
Next Event:
Eventname hour:minut
例如,如果我们在第 14 天的 * 32 分钟显示接下来要发生的事件(在本例中为事件 2)
如果我们在第 14 天 14 点 6 分钟显示事件 3
如果我们在第 21 天的 * 3 分钟显示 test5
等等。
提前谢谢您。
最佳答案
尝试
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 | name | day | hour | min | |----|-------------|-----|------|-----| | 1 | Test event1 | 30 | 2 | 30 |
这是一个SQLFiddle
关于php 选择并显示按分钟、小时、天排序的 sql 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39781935/