Почему дата в строковом формате не корректно сравнивается в Phalcon? - PullRequest
0 голосов
/ 24 ноября 2018

Моя переменная даты ведет себя странно!Я использую конструктор запросов 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'] - это строка (10) "2018-10-10"

Типы данных даты:

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

В базе данных даты хранятся в формате даты и времени, как показано в примере ниже

2018-11-24 09:05:18

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

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

должно иметь значение NOT NULL / STRING и быть совместимым с форматом даты

Лучше, если вы сможете санировать или проверять$filter перед привязкой к построителю запросов

Надеюсь, это поможет вам

0 голосов
/ 27 ноября 2018

ваша дата должна быть строковым выражением '2012-10-11' в противном случае она может восприниматься как математическое выражение.

...