【问题标题】:SQL between date today and beyond今天和以后日期之间的 SQL
【发布时间】:2018-08-12 20:31:40
【问题描述】:

我正在为我正在进行的项目进行查询。 我必须进行查询,向我显示今天的日期和仍将到来的日期。目前我的查询是这样的:

$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 onderhoudsLog.onderhoudsDatum >= NOW()
  • 您使用的是哪个 DBMS? MySQL、SQL 服务器?
  • onderhoudsDatum - 是日期字段吗?
  • @Mittal 我正在使用“phpmyadmin”sql,onderhoudsDatum 确实是日期字段

标签: php sql


【解决方案1】:

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

假设onderhoudsDatum 字段是日期时间数据类型

$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";

【讨论】:

    【解决方案2】:

    你可以试试这个代码

    $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";
    

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

    WHERE onderhoudsLog.onderhoudsDatum  => $today
    

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多