0

我有一个 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 字符串中,请协助

4

3 回答 3

1

与日期一起使用BETWEEN可以获得意想不到的结果。试试这个:

SELECT * 
FROM $tbl_name 
WHERE date >=  '" . $dates . "' 
AND date <= '" . $datee . "' 
于 2013-04-25T15:45:16.087 回答
1

使用BETWEENor >= & <=,两者都应该工作。

您需要确保字段类型为DATE.

另外,我建议使用mysqli。

以下是为您提供的示例代码:

$stmt = $db->prepare("SELECT * FROM tbl_name WHERE date_field between ? AND ?");

$stmt->bind_param("ss",$start_date,$end_date);

$stmt->execute();
于 2013-04-25T15:59:01.697 回答
0
  1. Change the type of your column.

    ALTER TABLE tbl MODIFY COLUMN date datetime;

  2. Use BETWEEN.

于 2013-04-25T15:48:19.093 回答