【问题标题】:Why date in string format isn't comparing correctly in Phalcon?为什么字符串格式的日期在 Phalcon 中不能正确比较?
【发布时间】:2018-11-24 13:08:38
【问题描述】:

我的日期变量表现得很奇怪!我正在使用 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'] is string(10) "2012-10-11" 和结束日期 var_dump($filter['end_date'] is string(10) "2018-10-10"

日期数据类型:

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

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

2018-11-24 09:05:18

【问题讨论】:

  • 您是否收到任何错误消息?您能否确认$filter['start_date']$filter['end_date'] 已定义且不为空,到目前为止,我认为您的陈述没有任何问题。也许您可以提供完整的$queryBuilder 声明?

标签: php mysql date datetime phalcon


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    $filter['start_date'] $filter['end_date']

    应该是 NOT NULL / STRING 并且与 DATE FORMAT 兼容

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

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-09-25
      • 2022-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多