今天和更早的日期之间的SQL

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了今天和更早的日期之间的SQL相关的知识,希望对你有一定的参考价值。

我正在查询我正在处理的项目。我必须提出一个查询,向我显示今天的日期和将来的日期。目前我的查询是这样的:

$query = "SELECT * FROM systeem 
RIGHT JOIN vestiging ON vestiging.id = systeem.vestigingID 
LEFT JOIN systeemMeldkamer ON systeemMeldkamer.systeemID = systeem.id 
LEFT JOIN meldkamers ON meldkamers.id = systeemMeldkamer.meldkamerID 
LEFT JOIN systeemContract ON systeemContract.systeemID = systeem.id 
LEFT JOIN onderhoudsLog ON onderhoudsLog.systeemContractID = systeemContract.id  
LEFT JOIN contracten ON contracten.ident = systeemContract.contractIDENT
WHERE onderhoudsLog.onderhoudsDatum  LIKE '2017%'  
ORDER BY onderhoudsLog.onderhoudsDatum ASC";

此查询将为我提供所有类似“2017%”的日期。相反,我希望得到今天的日期和今天之后的每个日期:

今天是:2018-03-05

我希望得到的结果:2018-03-05,2018-03-06,2018-03-07

明天它是:2018-03-06然后它必须搜索2018-03-06之后的所有日期

我希望任何人都能帮助我查询!不要介意“LEFT JOINS”,因为我必须通过6个表格,所以如果我们的客户,我可以将维护日期与数字相匹配。

答案

对于mysql,您可以使用以下查询。添加where子句,如:WHERE onderhoudsLog.onderhoudsDatum >= CURDATE()

假设onderhoudsDatum字段是datetime数据类型

$query = "SELECT * FROM systeem 
RIGHT JOIN vestiging ON vestiging.id = systeem.vestigingID 
LEFT JOIN systeemMeldkamer ON systeemMeldkamer.systeemID = systeem.id 
LEFT JOIN meldkamers ON meldkamers.id = systeemMeldkamer.meldkamerID 
LEFT JOIN systeemContract ON systeemContract.systeemID = systeem.id 
LEFT JOIN onderhoudsLog ON onderhoudsLog.systeemContractID = systeemContract.id  
LEFT JOIN contracten ON contracten.ident = systeemContract.contractIDENT
WHERE onderhoudsLog.onderhoudsDatum >= CURDATE()  
ORDER BY onderhoudsLog.onderhoudsDatum ASC";
另一答案

你可以尝试这个代码

$today = date('Y-m-d');

$query = "SELECT * FROM systeem 
  RIGHT JOIN vestiging ON vestiging.id = systeem.vestigingID 
  LEFT JOIN systeemMeldkamer ON systeemMeldkamer.systeemID = systeem.id 
  LEFT JOIN meldkamers ON meldkamers.id = systeemMeldkamer.meldkamerID 
  LEFT JOIN systeemContract ON systeemContract.systeemID = systeem.id 
  LEFT JOIN onderhoudsLog ON onderhoudsLog.systeemContractID = systeemContract.id  
  LEFT JOIN contracten ON contracten.ident = systeemContract.contractIDENT
  WHERE onderhoudsLog.onderhoudsDatum  => $today  
  ORDER BY onderhoudsLog.onderhoudsDatum ASC";

您使用phpdate()函数获取日期,将其格式化为MySql日期字符串,然后在查询中使用它:

WHERE onderhoudsLog.onderhoudsDatum  => $today
另一答案

是onderhoudsLog.onderhoudsDatum日期字段,然后使用'> = CURRENT_DATE'而不是'喜欢“2017%”'并按onderhoudsLog.onderhoudsDatum排序

以上是关于今天和更早的日期之间的SQL的主要内容,如果未能解决你的问题,请参考以下文章

试图找到如何在两个日期之间从 SQL 数据库中提取数据 [重复]

08001 - SQL Server Native Client 11.0 不支持连接到SQL Server 2000或更早的版本。

如何使用活动记录查询sql以获取指定时间之间的日期

计算今天和今天的上一月的日期

js获取日期:昨天今天和明天后天

php 按Anywhere Elementor小部件中的今天和未来日期排序