У меня есть код для запроса MariaDB с PHP 5.6.38 и PDO.База данных и код работают нормально, но если я использую оператор BETWEEN вместе с двумя DateTimes, код не дает результата - это означает, что Null - и нет Error - no Exception - всегда Null.Тип поля внутри MariaDB - DATETIME.Формат, хранящийся в БД: «2019-05-06 14:16:32».
Я испробовал много советов от stackoverflow.Проблема выглядит старой и хорошо известной, но я не нашел решения в это время.Мой текущий код выглядит следующим образом:
(пример кода для проверки проблемы с простым веб-сервером)
<?php
$cal = new Calendar();
var_dump($cal->GetDatabaseEvents('2019-06-01T00:00:00+200', '2019-06-10T23:59:59+200'));
class Calendar {
private $dbh;
public function __construct() {
$this->dbh = new PDO('mysql:host=localhost;dbname=calendar', 'mytable', 'mypwd');
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
public function GetDatabaseEvents($start, $end) {
$sql ="SELECT id, datetime_begin FROM events WHERE datetime_begin BETWEEN '2019-06-00T00:00:00' AND '2019-06-10T23:59:59'";
$sth = $this->dbh->prepare($sql);
if($count = $sth->execute()) {
while ($row = $sth->fetchObject()) {
echo some member of $row...
}
} else {
echo "SQL Error <br />";
echo $sth->queryString."<br />";
echo $sth->errorInfo()[2];
}
}
}
нет ошибок или исключений.Все результаты равны NULL.Если я удаляю часть FROM из SQL, оператор отлично работает и дает ожидаемый результат.
Я пробовал много других приемов, таких как: а) CAST ('2019-01-05T00: 00: 00', DATE или DATETIME) или b) нет ISO DateTime, подобного этому, '2019-01-05 00:00:00 'с CAST и без CAST, или c) без BETWEEN, но (datetime_begin
> = begin AND datetime_begin
<= end) или d) привязка параметров, например $ sth-> bindParam (': start_date ', $ start,PDO :: PARAM_STR);
но все результаты NULL
У вас есть какие-либо предложения?