0

我有代码可以搜索从开始到开始日期之间的日期

我的数据库字段是这样的:

===============================================

编号 | 用户名 | 收到的日期

===============================================

1 | 美国广播公司 | 2013-07-10 14:07:40

2 | 美国广播公司 | 2013-07-15 16:27:04

3 | rty | 2013-07-10 16:27:04

4 | rty | 2013-07-16 16:07:04

5 | 美国广播公司 | 2013-07-25 11:07:04

示例数据库:

我的搜索功能是这样的

$query = "SELECT * FROM visitdate WHERE id <> ''";

if(isset($dateFrom) && $dateFrom !=""){
$sql_dateFrom= $sql_dateFrom." AND receivedDate='".$dateFrom."'";}

if(isset($dateTo) && $dateTo !=""){
    $sql_dateTo= $sql_dateTo." BETWEEN receivedDate='".$dateTo."'";}

    $query = $query.$sql_dateFrom.$sql_dateTo;

    while($row = mysql_fetch_array($result)){

    echo $row['Userid'];
    }

然后这是我的示例 HTML 表单:

<form name="form" type="post">
<input type="text" name="dateFrom">
<input type="text" name="dateTo">
<input type="submit" value="Searh">
</form>

问题是: 如何根据所选日期显示该用户的全部数据。谢谢

4

5 回答 5

0

尝试构建此查询

 "SELECT * FROM visitdata WHERE id <> '' AND receivedDate >= '" . $dateFrom  . "' AND receivedDate <= '" . . "'
于 2013-07-15T06:09:17.100 回答
0

尝试将用户输入转换为时间戳 1 并使用类似这样的 mysql 进行比较

SELECT FROM_UNIXTIME(receivedDate,"%Y-%m-%d") FROM mytable

于 2013-07-15T06:10:22.557 回答
0

尝试以这种方式构建您的查询,使用 mysql 日期函数会将您的日期时间字段转换为日期字段。

<?php
$query = "SELECT * FROM visitdate WHERE id <> ''";

if(isset($dateFrom) && $dateFrom !=""){
    $sql_dateFrom= $sql_dateFrom." AND date(receivedDate)>='".date("Y-m-d", strtotime($dateFrom))."'";
}

if(isset($dateTo) && $dateTo !=""){
    $sql_dateTo= $sql_dateTo." AND date(receivedDate)<='".date("Y-m-d", strtotime($dateTo))."'";
}


$query = $query.$sql_dateFrom.$sql_dateTo;

while($row = mysql_fetch_array($result)){
    echo $row['Userid'];
}

这将允许四种可能的情况

  1. 用户指定开始和结束日期,将获取包含之间的记录
  2. 用户仅指定开始日期,将获取该日期及以后的记录
  3. 用户仅指定结束日期,将获取该日期及之前的记录
  4. 用户不指定任何内容。返回所有记录。

如果这些案例中的任何一个对您不起作用,那么只需测试这些案例并向用户显示错误,然后再构建和运行查询。

于 2013-07-15T06:11:28.127 回答
0

将静态添加00:00:00到开始变量和23:59:59结束变量。

$sql_dateFrom= $sql_dateFrom." AND receivedDate='".$dateFrom." 00:00:00'";}

if(isset($dateTo) && $dateTo !=""){
    $sql_dateTo= $sql_dateTo." BETWEEN receivedDate='".$dateTo." 23:59:59'";}
于 2013-07-15T06:12:24.657 回答
0

尝试这个:

$query = "SELECT * FROM visitdate WHERE id <> ''";
if (!empty($dateFrom)) {
    $query .= " AND receivedDate >= '$dateFrom'";
}
if (!empty($dateTo)) {
    $query .= " AND receivedDate <= '$dateTo'";
}

$result = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_array($result)) {
    echo $row['Userid'];
}
于 2013-07-15T06:14:10.123 回答