如何在两个特定日期之间从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天的记录。
我不知道什么是你的数据库结构,但你可以改变你的代码,这样做:
你的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'";
是的,这也是很好的解决方案。 –
$ date_to以什么结构显示?例如:yyyy-MM-dd hh:mm:ss? –
'strtotime'返回一个unix时间戳。 Doc在这里:http://php.net/manual/en/function.strtotime.php – Mindastic
这是你的解决方案。您需要像这样更改查询。
STR_TO_DATE(yourdatefield, '%d-%m-%Y') > CURDATE() - INTERVAL 7 DAYS
'req_date'是'd-m-Y'格式吗?我认为这将是'YYYY-MM-DD'(mysql日期格式,而不是PHP'日期'代码)中的日期或日期时间列。 – chris85
不,我使用相同的数据库格式。 (DD-MM-YYYY) –
什么是列类型? 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