我有一个SQL DB,我根据日期和时间存储信息。
SQL存储的格式是2013-04-25 15:13:37
列名是date_time,是Var
我的搜索PHP如下:
<form action="control_lbsresult.php" method="get">
<input type="hidden" name="member_msisdn" value="<?=$query?>"
/>
<input type="text" name="query" />
<br />
<label for="dates"></label>
<input type="date" name="dates" id="dates" />
Start Date<br />
<label for="datee"></label>
<input type="date" name="datee" id="datee" />
End Date<br />
<input type="submit" value="Search" />
</form>
这是它在URL
中提供的字符串/control_lbsresult.php?member_msisdn=&query=0827910119&dates=2013-04-01&datee=2013-04-
25
这就是我在结果页面中的内容:
<?php
$host="localhost"; // Host name
$username="***"; // Mysql username
$password="****"; // Mysql password
$db_name="****"; // Database name
$tbl_name="lbs_"; // Table name
// Connect to server and select database.
mysql_connect("$host", "$username", "$password")or die("cannot connect");
mysql_select_db("$db_name")or die("cannot select DB");
// get value of id that sent from address bar
$id=$_GET['id'];
// Retrieve data from database
$sql="SELECT * FROM $tbl_name WHERE date between '" . $dates . "' AND '" . $datee . "'
msisdn='$msisdn'";
我没有在日期之间过滤,而是给出了MSISDN的所有结果
我认为问题出在WHERE字符串中请协助
答案 0 :(得分:1)
使用BETWEEN
或>= & <=
,两者都应该有效。
您需要确保字段类型为DATE
。
另外,我建议使用mysqli。
以下是您的示例代码:
$stmt = $db->prepare("SELECT * FROM tbl_name WHERE date_field between ? AND ?");
$stmt->bind_param("ss",$start_date,$end_date);
$stmt->execute();
答案 1 :(得分:0)
将BETWEEN
与日期一起使用可以获得意想不到的结果。试试这个:
SELECT *
FROM $tbl_name
WHERE date >= '" . $dates . "'
AND date <= '" . $datee . "'
答案 2 :(得分:0)
更改列的类型。
ALTER TABLE tbl MODIFY COLUMN
日期datetime;
使用BETWEEN
。