如何在两个特定日期之间从Mysql获取数据

问题描述:

我想从两个日期之间使用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://*.com/questions/7391718/select-records-from-one-week-previous-in-mysql – chris85

我不知道什么是你的数据库结构,但你可以改变你的代码,这样做:

你的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

这是你的解决方案。您需要像这样更改查询。

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