2013-07-15 53 views
0

我有一些代碼來開始之間的日期搜索到從日期搜索日期自DATETIME表

我的數據庫字段是這樣的:

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

ID |用戶ID | receivedDate

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

1 | abc | 2013-07-10 14:07:40

2 | abc | 2013-07-15 16:27:04

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

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

5 | abc | 2013年7月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> 

問題是: 如何根據所選日期顯示來自該用戶的全部數據。由於

+0

*旁註:*停止使用廢棄的'mysql_ *'功能。改用MySQLi或PDO。 – Raptor

+0

如果您想稍後在MySQLi和PDO上遷移,請嘗試使用'SQL INNER JOINS'並使用'mysql_fetch_assoc'而不是'mysql_fetch_array'。 – Lekhnath

+0

你想顯示數據從一個日期到另一個..? – Pankaj

回答

0

嘗試建立這個查詢

"SELECT * FROM visitdata WHERE id <> '' AND receivedDate >= '" . $dateFrom . "' AND receivedDate <= '" . . "' 
+0

嗨,感謝您的查詢。我已經嘗試過。它只顯示選擇日期而不顯示Between dateFrom到dateTo數據。 –

0

嘗試用戶輸入轉換爲時間標記1和比較使用你的mysql是這樣

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

+0

好的。我正在嘗試...感謝朋友 –

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. 用戶沒有作任何說明。所有記錄都會返回。

如果這些情況中的任何一種都不適合您,那麼只需測試這些情況並在構建和運行查詢之前向用戶顯示錯誤。

+0

好的..謝謝親愛的朋友 –

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'";} 
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']; 
}