У меня сегодня есть странная проблема, связанная с функцией oci_bind_by_name
, которую я использую в PHP.oci_bind_by_name buggy с функцией TO_DATE SQL
Позвольте мне предоставить вам витрину.
Вот таблица с простыми датами:
create table test(col1 date);
insert into test values(to_date('01/01/2009','DD/MM/YYYY'));
insert into test values(to_date('01/01/2019','DD/MM/YYYY'));
insert into test values(to_date('01/01/2029','DD/MM/YYYY'));
insert into test values(to_date('01/01/2039','DD/MM/YYYY'));
Запуск этого запроса приведет к 2-х строк, если я связываю :dt_maj_deb
и :dt_maj_fin
к 01.01.2009 и 01/02/2019, например:
SELECT *
FROM TEST
WHERE col1 BETWEEN TO_DATE (:dt_maj_deb, 'DD/MM/YYYY')
AND TO_DATE (:dt_maj_fin, 'DD/MM/YYYY')
Results
-------
01.01.2009
01.01.2019
Итак, все так, как мы можем ожидать. Меня беспокоит, когда я хочу запустить тот же запрос с PHP. Вот мой тестовый код:
$query = "SELECT * FROM TEST
WHERE col1 BETWEEN TO_DATE (:dt_maj_deb, 'DD/MM/YYYY')
AND TO_DATE (:dt_maj_fin, 'DD/MM/YYYY')";
$stmt = oci_parse($conn,$query);
$value = '01/01/2009';
oci_bind_by_name($stmt,':dt_maj_deb',$value);
$value = '01/02/2019';
oci_bind_by_name($stmt,':dt_maj_fin',$value);
oci_execute($stmt);
oci_fetch_all($stmt, $result);
var_dump($result);
oci_free_statement($stmt);
oci_close($conn);
Results
-------
array(1) {
["COL1"]=>
array(0) {}
}
Что мне не хватает?
Спасибо, Алекс, еще раз я был обманут библиотекой oci, а не в первый раз ... Надеюсь, это было последнее :) –