使用两个日期之间的日期查询数据


Using between 2 dates to query data

我在表单中有两个输入框,我将在selDate下输入开始日期,在selDate2下输入结束日期。我的表将日期字段存储在文本字段中。

<form id="formDate" name="formDate" method="post" action="">
      <p><strong>Date Filter:</strong></br>
        </p>
      <p>
        <label for="selDate"></label>
        <input type="text" name="selDate" id="selDate" 
value="<?php echo $_POST['selDate']; ?>" />
      </p>
      <p>
        <label for="selDate2"></label>
        <input type="text" name="selDate2" id="selDate2" 
value="<?php echo $_POST['selDate2']; ?>"/>
      </p>
      <p>
        <input type="submit" name="go" id="go" value="Submit" />
    </form>

我使用下面的语句来列出相应的行。

$varDate_Recordset1 = $row_RecordsetLastDate['date'];
if (isset($_POST['selDate'])) {
  $varDate_Recordset1 = $_POST['selDate'];
}
$varDate2_Recordset1 = $row_RecordsetLastDate['date'];
if (isset($_POST['selDate2'])) {
  $varDate2_Recordset1 = $_POST['selDate2'];
}
mysql_select_db($database_port, $port);
$query_Recordset1 = sprintf("SELECT * FROM checkout, `transaction`, school_store 
WHERE `transaction`.activity_id=school_store.Tag 
AND `transaction`.transaction_id=checkout.transaction_id AND (checkout.`date` 
BETWEEN %s AND %s) AND `transaction`.status='1' 
ORDER BY checkout.`date` DESC, `transaction`.id DESC", 
GetSQLValueString($varDate_Recordset1, "text"), 
GetSQLValueString($varDate2_Recordset1, "text"));
$Recordset1 = mysql_query($query_Recordset1, $port) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

我在查询中使用了BETWEEN这两个变量。当输入日期时,我会回显空白行。我也试过结账。CAST(%s作为日期(和CAST(%d作为日期(之间的date无效。我甚至试着结账。date>=%s AND签出。date<=%It’’没有运气。为什么它不显示数据?

仅用于其他人搜索此信息时。

字段CCD_ 4。date不是DATE或DATETIME类型,因此没有显示当前查询的任何结果。

更改字段类型解决了问题。(但是这可能会导致数据丢失,所以要小心(。

结束查询应为(checkout.date BETWEEN%s AND%s(

由于日期在文本字段中,因此不能用作比较。您必须先将该列强制转换为日期。

(STR_TO_DATE(checkout.`date`, '%Y-%m-%d') BETWEEN %s and %s)

请确保这三种格式都是Y-m-d格式,否则可能需要进行转换。