Php 仅在一周内运行SQL查询
我知道如何根据日期对数据库运行SQL查询,但如何让服务器只在特定时间或特定日期运行该查询 我有一个包含活动的SQL数据库(编辑:这些活动将作为数字标牌显示在监视器上,因此无需任何用户输入)。有些活动在每个工作日进行,有些仅在特定的一天进行。我将每天的活动设置为具有相同的日期(1900-01-01),目前我有一个SQL查询始终显示这些条目,还有一个查询仅显示当前日期的条目:Php 仅在一周内运行SQL查询,php,sql,date,Php,Sql,Date,我知道如何根据日期对数据库运行SQL查询,但如何让服务器只在特定时间或特定日期运行该查询 我有一个包含活动的SQL数据库(编辑:这些活动将作为数字标牌显示在监视器上,因此无需任何用户输入)。有些活动在每个工作日进行,有些仅在特定的一天进行。我将每天的活动设置为具有相同的日期(1900-01-01),目前我有一个SQL查询始终显示这些条目,还有一个查询仅显示当前日期的条目: <tbody> <?php require_once('../include
<tbody>
<?php
require_once('../include/dbconn.php');
$result = $conn->prepare("SELECT * FROM daily WHERE Date_For='1900-01-01' ORDER BY id ASC");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
?>
<tr>
<td><label><center><?php echo $row['Child']; ?></center></label></td>
<td><label><center><?php echo $row['Activity']; ?></center></label></td>
</tr>
<?php } ?>
<?php
require_once('../include/dbconn.php');
$result = $conn->prepare("SELECT * FROM daily WHERE DATE(Date_For) = CURDATE() ORDER BY id ASC");
$result->execute();
for($i=0; $row = $result->fetch(); $i++){
?>
<tr>
<td><label><center><?php echo $row['Child']; ?></center></label></td>
<td><label><center><?php echo $row['Activity']; ?></center></label></td>
</tr>
<?php } ?>
</tbody>
您可以将两个查询合并为一个查询,以提高效率,还可以在WHERE
子句中添加额外的部分,以确保查询在周末运行时不会显示“每个工作日”事件:
SELECT
*
FROM
daily
WHERE
(
Date_For='1900-01-01'
AND DAYOFWEEK(CURDATE()) <> 1
AND DAYOFWEEK(CURDATE()) <> 7
)
OR Date_For = CURDATE()
ORDER BY
id ASC
选择
*
从…起
每日的
哪里
(
日期_='1900-01-01'
和DAYOFWEEK(CURDATE())1
和星期一(CURDATE())7
)
或Date_For=CURDATE()
订购人
身份证
(假设SQL中的区域性设置表示星期天是第1天,星期六是第7天。如果不需要,请调整数字。)如果只希望某些代码在特定时间运行,则a)检测代码执行的当前日期,并决定是否继续,或者b)通过Cron作业或计划任务来控制代码何时执行。但我认为,需求仍然有点不清楚?是否希望这样,如果某个活动发生在今天的日期,则该活动将仅从查询中返回?(如果是这样,为什么人们不能搜索明天发生的事情呢?)或者你根本不想在某些日子运行查询?不幸的是,你的措辞有点混乱。对不起,我错过了它将用于数字看板,所以人们无法搜索。回答的第一部分“在代码执行时检测当前日期,并决定是否继续”基本上就是我要问的。然后,如果您在某处有一个要运行(或不运行,如果愿意的话)的日期列表(例如,一周中的几天或一个月中的几天,无论计划需要什么),您可以比较当前日期是否与其中任何一天匹配。这有帮助吗?周末的好处是,我忘了你的“每天”活动只在工作日进行<代码>选择*从每天,其中(Date_For='1900-01-01'和DAYOFWEEK(CURDATE())1和DAYOFWEEK(CURDATE())7)或Date_For=CURDATE(),按id ASC排序。(假设SQL中的区域性设置表示星期天是第1天,星期六是第7天。如果不是,请调整数字。现在,如果今天是星期六或星期天,则不会从查询中返回“每天”活动。比在PHP中检测日期更简单、更整洁(略)。