【问题标题】:use WHERE CLAUSE for search data from A date until B date使用 WHERE CLAUSE 搜索从 A 日期到 B 日期的数据
【发布时间】:2010-10-12 09:15:09
【问题描述】:

假设我的搜索页面上有两个下拉列表和一个按钮:

From
<select id="1stdate">
Until
<select id="2nddate">
<input type="button" id="search">

我想搜索从1stdate2nddate 的数据,在这种情况下如何使用 WHERE CLAUSE?例如。我想搜索“从 09-2010 到 11-2010”的数据。 这是我的查询:

SELECT CONCAT( YEAR(Inspection_datetime ),'-',LPAD(MONTH(Inspection_datetime),2,'0'))
FROM `inspection_report`
GROUP BY  CONCAT( MONTH(Inspection_datetime ),YEAR(Inspection_datetime))
ORDER BY  CONCAT( MONTH(Inspection_datetime ),YEAR(Inspection_datetime))  DESC

【问题讨论】:

    标签: php mysql date where-clause


    【解决方案1】:

    我通常会这样做:

    <?php
    
    list($m1, $y1) = explode($_1stdate);
    list($m2, $y2) = explode($_2nddate);
    
    $date1 = "$y1-$m1-01";
    $date2 = "$y2-$m2-" . date("t", mktime(0,0,0,$m2, 1, $y2));
    
    $sql = "SELECT *
    FROM `inspection_report`
    WHERE DATE(Inspection_datetime) BETWEEN '$date1' AND '$date2'";
    

    请注意:为简单起见,我不添加表单验证。

    【讨论】:

      【解决方案2】:

      这是你需要的:

      WHERE Inspection_datetime BETWEEN $1stdate AND $2nddate
      

      所以它会导致

      SELECT CONCAT( YEAR(Inspection_datetime ),'-',LPAD(MONTH(Inspection_datetime),2,'0'))
      FROM `inspection_report` WHERE Inspection_datetime BETWEEN $1stdate AND $2nddate
      GROUP BY  CONCAT( MONTH(Inspection_datetime ),YEAR(Inspection_datetime))
      ORDER BY  CONCAT( MONTH(Inspection_datetime ),YEAR(Inspection_datetime))  DESC
      

      【讨论】:

      • 哇..我客人我不能直接使用 Inspection_datetime。我可以使用像 '".$1stDate."' 这样的连接吗?
      • 为什么不呢?这有什么问题?
      • shure 你可以,但是像“This is a string with the value of a var $var in it”这样写字符串是完全正确的,因为“”字符串的解释方式不同于“”字符串和 $ var 将被评估
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-01
      • 1970-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多