php 选择并显示按分钟、小时、天排序的 sql 信息

标签 php mysql sql events calendar

我有一个简短的问题想请教谁可以告诉我如何制作我的脚本 我有这张表

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/

相关文章:

php - php文件中的8个空格如何使apache崩溃?

mysql - 为什么 MySQL 将 null 更改为零?

php - 社交网络 facebook、myspace 等社交网络的用户操作

MySQL 更新和删除难题

mysql - 寻找产品的最早历史条目我应该加入历史/产品表还是在产品表中存储值?

php - Laravel Echo 服务器在浏览器中没有响应

php - Axis 网络摄像头 http 上传到 php

javascript - Wordpress 可以根据视口(viewport)大小获取模板部分吗?

mysql - 如何为不同的单列子句索引表

php - 在 PHP 中将 2 个不同表中的 1 列匹配在一起