MSSQL datetime между в PHP не работает правильно
Вот пример кода, который отлично работает в Dbvisualizer, но не работает в PHP-скрипте.
select
convert(varchar, oh.date,101),
oh.id
from oh
where oh.state=1 and convert(varchar,oh.date,104) between '17.12.2015' and '17.12.2015'
order by oh.id desc,date desc
В Dbvisualizer он возвращает строки в выбранном диапазоне дат, но в php он возвращает все записи из таблицы. mssql.datetimeconvert не имеет никакого влияния. Где проблема?
1 ответ
Во-первых, не конвертируйте дату в varchar для сравнения строк. Пусть SQL Server преобразует ваши строки дат в даты, чтобы можно было сравнивать даты. Во-вторых, ваш BETWEEN перечисляет те же даты, поэтому единственные возвращенные записи будут с полуночи 17/12/2015. Этот SQL предпочтительнее:
select convert(varchar, oh.date,101), oh.id
from oh
where oh.state=1 and oh.date between '2015-12-17' and '2015-12-17'
order by oh.id desc,date desc
Если это не работает, вы можете опубликовать свой код PHP?