为什么在Phalcon中不能正确比较字符串格式的日期?

时间:2018-11-24 13:08:39

标签: php mysql date datetime phalcon

我的日期变量表现得很奇怪!我正在使用Phalcon查询生成器来从日期范围内的数据库中获取一些记录。我的查询如下:

if(isset($filter['start_date']) && $filter['start_date'] != '' && isset($filter['end_date']) && $filter['end_date'] != ''){
    $queryBuilder->where('e.created_at >= :startDate: AND e.created_at <= :endDate:');
    $parameters = array('startDate' => $filter['start_date'], 'endDate' => $filter['end_date']);
}

$parameters中,当我像这样手动输入日期时,当我使用上述查询中的变量时,它运行良好,但无法正常工作:

$parameters = array('startDate' => "2012-10-11", 'endDate' => "2018-10-10");
  

var_dump($ filter ['start_date']是字符串(10)“ 2012-10-11”   和结束日期   var_dump($ filter ['end_date']是string(10)“ 2018-10-10”

日期数据类型:

`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,

在数据库中,日期以日期时间格式存储,如下例所示

2018-11-24 09:05:18

2 个答案:

答案 0 :(得分:0)

您的日期必须为字符串表达式'2012-10-11',否则可能会被视为数学表达式。

答案 1 :(得分:0)

$ filter ['开始日期']     $ filter ['end_date']

应为NOT NULL / STRING并与DATE FORMAT兼容

最好在将$filter绑定到查询生成器之前先对其进行清理或验证

希望它可以为您提供帮助