我在表单中有两个输入框,我将在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
格式,否则可能需要进行转换。