如何在设置日期之前获取所有数据,包括SQL中的小时数



im使用dql在PHP中编码一些查询,以获取数据库的数据,这取决于下一种形式设置的实体,问题是我比较2个日期,结果比设置的一天少于一天一天,因为第二个日期小时在00:00:00固定,结果比我在形式中提取的一天要少一天:

形式实体:

    User.php on line 7719:
array:5 [▼
  "dateFrom" => null
  "dateTo" => DateTime {#978 ▼
    +"date": "2017-11-21 00:00:00.000000"
    +"timezone_type": 3
    +"timezone": "UTC"
  }
  "name" => null
  "surname" => null
  "car" => null
]

代码示例:

if ($form->get('button')->isClicked()) {
   $entity = $form->getData();
   $query = $em->getRepository('AppBundle:User')->createQueryBuilder('u');
   if ($entity['dateTo']) {
       $query->andWhere('u.requestDate<= :to')
                        ->setParameters(['to' => $entity['dateTo']]);
   }
   $resultQuery = $query->getQuery()->getResult();          

查询结果:

UserController.php on line 7772:
array:9 [▼
  0 => User {#3292 ▼
    -requestDate  => DateTime {#3289 ▼
      +"date": "2017-11-16 12:25:46.000000"
      +"timezone_type": 3
      +"timezone": "UTC"
    }
    -name: "Patrick"
    -surname: "Jhonson"
    -car: "Mercedes"
  }
  1 => User {#3296 ▼
    -requestDate  => DateTime {#3777 ▼
      +"date": "2017-11-17 13:30:15.000000"
      +"timezone_type": 3
      +"timezone": "UTC"
    }
    -name: "Peter"
    -surname: "Jhonson"
    -car: "Jaguar"
  }
  2 => User {#3299 ▼
    -requestDate  =>  DateTime {#3790 ▼
      +"date": "2017-11-21 06:51:29.000000"
      +"timezone_type": 3
      +"timezone": "UTC"
    }
    -name: "Anna"
    -surname: "Stark"
    -car: "Seat"
  }

问题是将任何日期与日期进行比较:" ----/-/- 00:00:00.000000"当我将dateTo设置为"创建日期"比较的日期与00:00:00小时的日期时,我需要将此data与23:59:59进行比较,因为如果requestDate> dateTo小时的小时,我会得到在$resultQuery中,所有用户在dateTo之前,不包括dateTo天。

如果y放置 requestDate => 2017-11-21的所有用户,结果将为 requestDate> 2017-11-21原因 dateTo的小时为00:00:00:00

我假设$entity['dateTo']DateTime类的实例,以使结果与您的dateTo参数匹配,无论您可以做一个简单的技巧,只需将一天添加到您的参数和参数和更改比较标准从<=<,因此它将为您提供预期的输出

$dateTo = $entity['dateTo'];
if ($dateTo) {
    $dateTo->add(new DateInterval('P1D'));
    $query->andWhere('u.requestDate < :to')
          ->setParameters(['to' => $dateTo]);
}

最新更新