php - 使用 PHP 从 MySQL 过滤时间和日期数据
问题描述
我不是 PHP/MySQL 程序员,但我试图通过为他创建一个非常简单的网站来帮助刚开了自己的理发店的朋友。我在网站上添加了一个将信息发送到 MySQL 数据库的联系表格。那部分工作得很好。现在,我试图通过仅显示当天安排的约会来显示即将到来的约会。
<?php
$sql = 'SELECT * FROM tbl_content';
$query = mysqli_query($conn, $sql);
if (!$query) {die ('SQL Error: ' . mysqli_error($conn));
}
date_default_timezone_set("America/New_York");
$dateToday = date('m/d/Y');
while ($row = mysqli_fetch_array($query))
{
$whatService = $row['service'];
$nameData = $row['name'];
$justName = explode(" ", $nameData);
$timeData = $row['Time'];
$modifiedTime = date("g:i A", strtotime($timeData));
$currentTime = $theDate = $row['date'];
$modDate = date('m/d/Y', strtotime($theDate ));
if ($modDate === $dateToday) {
echo '<li class="w3-bar">
<div class="w3-bar-item">'.$justName[0].'</div>
<span class="w3-bar-item w3-right">'.$modifiedTime.'</span>
<span class="w3-bar-item w3-center w3-right">'.$whatService.'</span>
</li>';
}
}
?>
这部分工作得很好,它准确地显示了我需要的东西。但这就是问题所在。我只想显示当天剩余时间即将到来的约会。我的意思是,例如,如果现在是下午 3:00,则只显示安排在下午 3:00 之后的约会。我试图通过将其添加到条件来做到这一点:
if ($modDate === $dateToday && date("g:i A",$modifiedTime) >= date("g:i A",strtotime("now"))) {...
我也试过
if ($modDate === $dateToday && $modifiedTime >= date("g:i A",strtotime("now"))) {..
我不确定我需要做什么。请注意,我只包含了部分代码。如果需要更多,我会的。我将不胜感激任何帮助。谢谢。
解决方案
在数据库级别处理这种过滤更容易、更有效,这是它们的设计目的。你的很简单,假设你的数据库服务器日期与你的理发店在同一个时区,或者插入和提取的偏移量相同,在查询中添加一个 where 子句,只返回今天和当前之后到期的约会时间:
SELECT * FROM tbl_content WHERE Time > CURTIME() AND date = CURDATE()
我还建议将日期时间存储在一起(日期时间字段类型),这使得许多查询更易于管理,并且速度更快。
如果您有一个字段,则查询将是:
SELECT * FROM tbl_content WHERE DateTme > NOW() AND date(DateTime) = CURDATE()
您还应该将索引添加到Time
和date
推荐阅读
- rust - 扭曲错误:错误[E0277]:特征绑定`impl warp::Future: warp::filter::FilterBase`不满足
- css - 背景渐变在 Firefox 中显示黑色水平线故障
- r - R dplyr 相对于其他列改变列
- javascript - 开发 VSCode 扩展时获取当前活动文件的目录
- azure - 如何将 Log Analytics / Azure Monitor 挂接到角色分配中?
- imagemagick - 是否可以在不计算透明像素的情况下使用 imagemagick-convert 的直方图可视化选项?
- go - 以 cmd 为参数的 golang exec 不打印标准输出
- javascript - 如何计算一个巨大的项目列表
- c# - 玩家跳跃音频干扰玩家死亡音频
- django - Django 无法识别/找不到 post_save 编辑字段?