php - 使用 MySQL 按日期和时间分别选择条目
问题描述
我有这个查询,它选择状态为待处理的每个约会。效果很好。此查询的问题它还将选择过去未决的约会。我只想显示那些今天在较晚的时间current_time
或只是在较晚的日期。时间和日期在不同的列中。在下面的示例中,应仅返回第二行和第三行。我正在为您提供完整的查询,因为它现在正在我的应用程序中使用和工作。如何做到这一点?
user_schedule 表
id | customer_id | date | time | cleaning_status
1 | 345 | 2020-06-09 | 08:00:00 | Pending
2 | 768 | 2020-06-09 | 19:00:00 | Pending
3 | 913 | 2020-06-11 | 07:00:00 | Pending
PHP
if(!empty($_POST)){
//variables
$current_time ='16:00:00';
$current_date ='2020-06-09';
$my_city ='Miami';
$sstatus_o = 'Pending';
//query
$data = $conn->prepare("select *,us.id as orderid,us.customer_id
as ownerId from user_schedule us
left join users u
on us.customer_id=u.id
LEFT JOIN user_avatar ua
ON us.customer_id=ua.user_id
and ua.last_update = (select
max(last_update)
from user_avatar ua1 where
ua.user_id=ua1.user_id)
left join user_address uad
on us.customer_id=uad.user_id
where (uad.city LIKE ?) AND
us.cleaning_status=? ORDER BY us.id DESC");
$data->bind_param('ss',$my_city,$sstatus_o);
$data->execute();
$result_data = $data->get_result();
}
解决方案
您可以在查询中添加另一个约束,检查由您的date
和time
值形成的时间戳是否大于您的$current_date
和$current_time
值,即
WHERE uad.city LIKE ?
AND us.cleaning_status = ?
AND TIMESTAMP(us.date, us.time) > TIMESTAMP(?, ?)
然后将$current_date
and$current_time
变量添加到bind_param
ie
$data->bind_param('ssss', $my_city, $sstatus_o, $current_date, $current_time);
推荐阅读
- javascript - 如何在 javascript 中获取 iPhone 7 的设备旋转?
- python - 我在哪里可以获取 discord.py 的令牌?
- java - Android中的空指针异常 - onActivityResult()
- html - 复选框显示为文本框
- r - 修复了 R 中条形图中变量特征的颜色
- python - 不断收到“找不到页面”。该怎么办?
- 3dsmax - 如何通过 Python 重置资产路径
- python - 如何将 pytorch 添加到包含用 C++ 编写的项目的 docker 文件中?
- vue.js - 如何在 Nuxt 中组件和页面的脚本部分访问 vuex
- c++ - c++中的内存泄漏示例