2015-07-11 48 views
0

我想從兩個日期之間使用Php從Mysql獲取數據。 我無法得到這個.. 這是我的密碼。 這些生產線的日期間隔...如何在兩個特定日期之間從Mysql獲取數據

date_default_timezone_set("EST"); 
$today = date('d-m-Y'); 
$date_to = $today; 
$date_to = strtotime("-7 days", strtotime($date_to)); //-7 days for last week. -30 for last week 
$date_to = date("d-m-Y", $date_to); 

現在,這裏有我正在運行的查詢..我有兩個條件。 1數據應介於$today$date_to之間。而assigned應該等於1。 Assigned是數據庫表'requests'中的一列。

$get_req = "SELECT * FROM `requests` WHERE `req_date` between '$today' AND '$date_to' AND `assigned`='1'"; 
$result = mysqli_query($dbc, $get_req); 
while ($res = mysqli_fetch_assoc($result)){ 
    $driver_id = $res['assigned_driver_id']; 
    $req_id = $res['req_id']; 
    $req_title = $res['request_title']; 
    $req_price = $res['price']; 
    $req_time = $res['request_time']; 
    $req_date = $res['req_date']; 
    $driver = $res['driver_name']; 
} 

在這裏,我無法得到我需要的結果。問題是僅在日期查詢中。我的意思是在'今日'和'$ date_to'之間的日期A至日期B. req_date`之間 它的工作原理完美。

請告訴我我應該怎麼做才能修復它。我只想得到過去7天的記錄。

+0

'req_date'是'd-m-Y'格式嗎?我認爲這將是'YYYY-MM-DD'(mysql日期格式,而不是PHP'日期'代碼)中的日期或日期時間列。 – chris85

+0

不,我使用相同的數據庫格式。 (DD-MM-YYYY) –

+0

什麼是列類型? http://dev.mysql.com/doc/refman/5.6/en/datetime.html如果是日期/日期時間,你可以使用一些預定義的函數來計算出周,月等。http://stackoverflow.com/questions/7391718/select-records-from-one-week-previous-in-mysql – chris85

回答

2

我不知道什麼是你的數據庫結構,但你可以改變你的代碼,這樣做:

你的PHP代碼

date_default_timezone_set("EST"); 
$today = time(); 
$date_to = strtotime("-7 days"); //-7 days for last week. -30 for last week 

,且查詢:

$get_req = "SELECT * FROM `requests` WHERE UNIX_TIMESTAMP(`req_date`) between '$today' AND '$date_to' AND `assigned`='1'"; 
+0

是的,這也是很好的解決方案。 –

+0

$ date_to以什麼結構顯示?例如:yyyy-MM-dd hh:mm:ss? –

+0

'strtotime'返回一個unix時間戳。 Doc在這裏:http://php.net/manual/en/function.strtotime.php – Mindastic

0

這是你的解決方案。您需要像這樣更改查詢。

STR_TO_DATE(yourdatefield, '%d-%m-%Y') > CURDATE() - INTERVAL 7 DAYS 
相關問題