我刚开始解决一个难题。让我解释一下,我的桌子看起来是这样的:
- ID: 0 | USERNAME: SOMETHING1 | DAY: 1 | START: 20:00 | END: 21:00 | STATUS: 0 |
- ID: 1 | USERNAME: SOMETHING2 | DAY: 3 | START: 18:00 | END: 20:00 | STATUS: 0 |
- ID: 2 | USERNAME: SOMETHING3 | DAY: 0 | START: 19:00 | END: 21:00 | STATUS: 0 |
- ID: 3 | USERNAME: SOMETHING4 | DAY: 1 | START: 21:00 | END: 23:00 | STATUS: 0 |数据库被创建到广播网站。网站主页显示:当前试镜(现在正在广播中播放)和下一次试镜:下面是我要展示的内容。缩短(姓名,开始时间,结束时间)我想显示试镜的“今天”,但最近的时间。如果试镜开始时间高于当前时间,请跳到下一次。如果没有任何“今天”的试镜,跳过并显示第二天的试镜和所有的循环7天。
用于使用:$currentDay=date("w"); $currentTime=date("H:i");和数组读取值,这些数组将将天数更改为文本。
发布于 2022-02-02 15:38:53
由于您有当前日期和时间的值,所以可以尝试执行以下mysql查询
$currentDay = date("w");
$currentDateTime = date('Y-m-d H:i');
$sql = "SELECT * FROM `puzzle` WHERE `DAY` >= ".$currentDay." AND STATUS = 0
order by `DAY` ASC, ABS(TIMESTAMP(CURRENT_DATE(),`START`) - '".$currentDateTime."') ASC LIMIT 1";
// Now Execute the $sql as with you framework , CMS , custom PHP whatever you are using .
// Also change the $sql query also as per your requirement , your question wasn't clear enough to understand . 例如,,我尝试过这个查询,它对我的测试用例很好。
SELECT * FROM `puzzle` WHERE `DAY` >= 3 AND STATUS = 0 order by `DAY` ASC, ABS(TIMESTAMP(CURRENT_DATE(),`START`) - '2022-02-02 10:10') ASC LIMIT 1https://stackoverflow.com/questions/70956781
复制相似问题