Добро пожаловать на сайт <БагБД>, где вы можете задавать вопросы о программировании и разработке на Битрикс и Битрикс24, и получать быстрые и квалифицированные ответы от профессионалов!

Фильтр по дате

00 голосов
3
Доброго дня всем!

Задача: сделать нечто вроде архива новостей. Пользователь может выбрать или год или месяц и соответственно должен получить новости или за год или за месяц

Если дата находится в свойстве (тип Дата), то всё получается
Код
$GLOBALS["arrFilter"]["PROPERTY_PROP_DATE_FROM"] = ($filter["year"] ? $filter["year"] : '%').'-'.($filter["month"] ? $filter["month"] : '%').'-'.($filter["day"] ? $filter["day"] : '%').' %';

// На выходе получаем [PROPERTY_PROP_DATE_FROM] => 2010-%-% % или %-05-% %  или 2010-05-% % ...


а вот с DATE_ACTIVE_FROM никак не хочет работать
пробовал и YYYY-MM-DD и DD.MM.YYYY

Подскажите, плиз, в чём загвоздка
спросил 24 Фев, 14 от uHDurO (100 баллов)

3 Ответы

00 голосов
Если дата находится в свойстве, она хранится в поле типа VARCHAR, и к ней применимы маски с %
А поле ACTIVE_FROM имеет тип DATETIME, к нему такие маски неприменимы.
ответил 28 Июль, 14 от Ly (4,580 баллов)
00 голосов
Что-то подобное и предполагал
И как решить задачу для поля DATE_ACTIVE_FROM?
ответил 30 Ноя, 14 от uHDurO (100 баллов)
00 голосов
Там мутное место, связанное с форматом даты. Вот пример из компоненты bitrix:news.calendar:
Код
$arFilter = Array(
   "ACTIVE" => "Y",
   ">=".$arParams["DATE_FIELD"] => date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,$currentMonth,1,$currentYear)),
   "<".$arParams["DATE_FIELD"] => date($DB->DateFormatToPHP(CLang::GetDateFormat("SHORT")), mktime(0,0,0,$currentMonth+1,1,$currentYear)),
   "IBLOCK_ID" => $arParams["IBLOCK_ID"]
);

В $arParams["DATE_FIELD"] могут находиться "DATE_ACTIVE_FROM", "DATE_ACTIVE_TO", "TIMESTAMP_X", "DATE_CREATE".
ответил 25 Март, 15 от Ly (4,580 баллов)

Похожие вопросы

0 голосов
5 ответов
спросил 15 Дек, 13 от BkackWulf (100 баллов)
0 голосов
2 ответов
спросил 31 Авг, 13 от JIapo4ka (120 баллов)
0 голосов
4 ответов
спросил 06 Фев, 14 от VALALEX (100 баллов)
0 голосов
3 ответов
спросил 12 Окт, 13 от Ozzman (120 баллов)