php – mysql选择datetime字段小于指定值的所有记录

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – mysql选择datetime字段小于指定值的所有记录脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我试图运行一个将选择的查询,在这种情况下,没有预约的客户是X时间(例如2周).它归结为“向我展示一个未在2周内预约的客户名单”.我试图通过做类似的事情来解决这个问题:
$date = new DateTime;
$ago = new Dateinterval('P2W');
$target = $date->sub($ago);
//query to select clients that aren't scheduled after the $target date
$clients = ...;

涉及两个表,appt_tbl和clients_tbl. appt_tbl为每个约会记录存储client_id.

基本上我需要的是为每个客户选择“最大”约会,如果它是<我的$target日期,将它们包含在查询结果中.我尝试了各种各样的查询,查询查询,但我很难找到正确的查询. 我目前的尝试看起来像:

SELECT * 
From clients_tbl 
INNER JOIN
(
    SELECT client_id 
    From appt_tbl 
    WHERE MAX(appt_date_time) < '2012-07-22' 
    group by client_id
) appts ON appts.client_id = clients_tbl.client_id;

这还应该包括从未安排过的客户(IE不会出现在appt_tbl中),但不包括在接下来的两周内预约的客户.

SELECT a.*
FROM clients_tbl a
LEFT JOIN appt_tbl b ON 
          a.client_id = b.client_id AND 
          b.appt_date_time >= CURDATE() - INTERVAL 2 WEEK 
WHERE b.client_id IS NULL

查询首先执行的操作(在WHERE过滤之前)选择所有客户端,无论他们是否具有超过两周前的预定约会.

如果客户端没有超过两周的约会,则联接表中的值将为NULL.我们希望连接条件不满足的所有行(即连接表中的值为null),这是通过WHERE b.client_id IS NULL完成的.

这也包括完全没有任何相应约会的结果集客户.

未来有约会的客户将被排除在外.

也没有必要在PHP中构造日期时间字符串.您可以直接在查询中执行此操作(尽管您可以将周数作为参数传递).

脚本宝典总结

以上是脚本宝典为你收集整理的php – mysql选择datetime字段小于指定值的所有记录全部内容,希望文章能够帮你解决php – mysql选择datetime字段小于指定值的所有记录所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。