php - PDO PHP - 查找 2 个日期之间的所有行 - 显示空白

标签 php mysql pdo between

我试图使用 PDO php 获取我的数据库表中具有本周开始日期的所有行。要计算本周的第一个和最后一个日期,我使用以下方法:

$week_start = date('d-m-Y',time()+( 1 - date('w'))*24*3600);  
$week_end =  date('d-m-Y',time()+( 7 - date('w'))*24*3600); 

然后在我的 pdo 查询中我有:

$query = " 
    SELECT 
        *
    FROM 
        bookings as bb 
    INNER JOIN 
        reservation as br ON bb.booking_id=br.bookings_id
    INNER JOIN 
        cars as bc ON br.car_id=bc.car_id 
    WHERE 
        payment_success=1 AND 
        is_block=false AND 
        is_deleted=0 AND
        DATE_FORMAT(start_date, '%d-%m-%Y') 
        BETWEEN '".$week_start."' AND '".$week_end."'
"; 

try { 
    $stmt = DB::get()->prepare($query); 
    $stmt->execute(); 

    $rows = $stmt->fetchAll();
}  
catch(PDOException $ex) { 
    die("Failed to run query: " . $ex->getMessage()); 
} 

foreach($rows as $row):
    $row['booking_id'] etc...
endforeach;

问题是尽管有多个开始日期在本周内的预订,但我没有在输出中显示任何行

最佳答案

DATE_FORMAT() 返回字符串,而不是日期。将 3 个字符串参数传递给 BETWEEN...谁知道会返回什么。

要取消 ass-backwards 您的代码,请使用:

$week_start = date('Y-m-d',time()+( 1 - date('w'))*24*3600);  
$week_end =  date('Y-m-d',time()+( 7 - date('w'))*24*3600); 

以 mySQL 期望的方式格式化您的日期,并且:

WHERE 
  start_date BETWEEN '".$week_start."' AND '".$week_end."'

在查询中。

或者,如果您更喜欢面向对象的方法,请执行以下操作:

$week_start = new DateTime; 
$week_end = new DateTime;
$week_start->setTimestamp(time()+( 1 - date('w'))*24*3600)); 
$week_end->setTimestamp(time()+( 7 - date('w'))*24*3600);

然后在您的查询中执行:

WHERE 
  start_date 
      BETWEEN '".$week_start->format('Y-m-d')."'
      AND '".$week_end->format('Y-m-d')."'

然后对于其他所有内容,您可以随心所欲地回显格式:

echo $date->format('d-m-Y'); // etc

关于php - PDO PHP - 查找 2 个日期之间的所有行 - 显示空白,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15099187/

相关文章:

php - 如何使用 PDO 查找数据库表的最后一条记录?

php - WordPress 使用 MySQL 获取图像

php - 如何使用 PHP 捕获 MySQL 中的搜索索引?

php - 查询未在 SQL 中执行(WHERE 子句)

java - JDBC MySql where 子句中的绑定(bind)变量语法错误

mysql - 使用包含不支持格式的文字值的 CSV 数据更新 MySQL 表

php - 使用 node-mysql 返回一个列(如 PDO 中的 fetchColumn)

php - 关于 $_FILES ['MF__F_0_0' ],MF__F_0_0 指的是什么?

java - Hibernate注释一对多

php - 区分大小写的 PHP PDO 登录脚本