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

Php 如何在两个特定日期之间从Mysql获取数据,php,mysql,date,Php,Mysql,Date,我想在两个日期之间用Php从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",

我想在两个日期之间用Php从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\u到
日期之间。分配的
应等于
1
。分配的是数据库表中的一列
“请求”

$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'];
}
在这里,我无法获得所需的结果。问题只存在于日期查询中。我的意思是在日期A到日期B之间。请求日期`在'今天'和'日期'之间' 它工作得很好


请告诉我该怎么做来修理它。我只想获取过去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'";

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

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

请求日期是否为
d-m-Y
格式?我想它应该是
YYYY-MM-DD
中的日期或日期时间列(mysql日期格式,而不是PHP
date
代码)。不,我对数据库使用了相同的格式。(DD-MM-YYYY)列类型是什么?如果是date/datetime,您可以使用一些预定义的函数来计算周、月等。列类型为varchar,这就是为什么
between
不起作用的原因。目前mysql只认为它是文本。它应该是
date
datetime
列(您需要更新现有数据)。也许这会有用,$date\u to显示在什么结构中?例如:yyyy-MM-dd hh:MM:ss?
strotime
返回unix时间戳。文件在此: