Документация для разработчиков
Темная тема

Дата

Описание

Для фильтрации элементов инфоблока по свойству типа Дата переменная должна содержать значение даты в формате: YYYY-MM-DD HH:MI:SS.

Значения фильтра этого типа обрабатываются по следующим правилам:

ОперацияЗначение Описание
пустая строкаФильтр по полю применяться не будет. Будут выбраны все значения.
false
Если перед полем этого фильтра указано отрицание (символ "!"), то будут выбраны все не пустые значения.
Иначе будут выбраны пустые значения - NULL.
"><" или "!><"должно быть массивом с двумя элементамиБудет выполнена проверка на попадание в диапазон заданный элементами массива значения фильтра. Включительно. Если перед полем этого указано отрицание (символ "!"), то будут выбраны значения не попадающие в диапазон.
"=", "%", "?" или не заданабудет приведено к типу времени БД с помощью функции CharToDateFunction Проверка на точное совпадение значения. Если указано отрицание, то проверка будет выполнена на неравенство.
">", "<", ">=", "<="будет приведено к типу времени БД с помощью функции CharToDateFunction"Больше", "меньше", "больше или равно" и "меньше или равно". Можно использовать "!" для отрицания условия.

Примечание: если значение фильтра массив, то для каждого элемента будут формироваться соответствующие условия, а затем они будут объединены по "ИЛИ". В случае отрицания условия будут объединяться по "И".

Смотрите также

Примеры использования

1

<?
//Все активные элементы это те у которых ACTIVE_FROM не задано или меньше чем сейчас
//при не заданной ACTIVE_TO или ACTIVE_TO больше чем сейчас
$arFilter = array(
	"<=DATE_ACTIVE_FROM" => array(false, ConvertTimeStamp(false, "FULL")),
	">=DATE_ACTIVE_TO"   => array(false, ConvertTimeStamp(false, "FULL")),
);
?>

В примере выше используется ConvertTimeStamp, поэтому дата будет возвращена в формате сайта

2

При фильтрации свойств инфоблока по дате, нужно указывать формат YYYY-MM-DD HH:II, иначе фильтр работать не будет.

$arFilter = array(
	'>=PROPERTY_DATE_TO'  => date( 'Y-m-d H:i:s' ),
	'<=PROPERTY_DATE_TO'  => date( 'Y-m-d H:i:s' )  
);


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
0
Екатерина Раздорова
, Речь в документации про свойства инфоблока, а у Вас на скриншоте поле инфоблока
4
Дмитрий Грищенко
Цитата
Для фильтрации элементов инфоблока по свойству типа Дата переменная должна содержать значение даты в формате: YYYY-MM-DD HH:MI:SS.
Т.е. date('Y-m-d H:i:s').

Если тип свойства "Дата" (не "Дата/Время"), тогда если в фильтре
'>=PROPERTY_DATE' = '2019-09-02 00:00:00'
то в выборку не попадет элемент со значением "2019-09-02".

Но если в фильтре
'>=PROPERTY_DATE' = '2019-09-02'
или
'>=PROPERTY_DATE' = '2019-09-01 23:59:59'
тогда этот элемент попадет в выборку.

Это связано с тем что в таблице значений свойств b_iblock_element_property поле "VALUE" имеет тип "text".
Свойства типа "Строка", "Число", "Дата", "Деньги"... в БД тип "text".
0
hex2bomb
Для выборки произвольной даты нужно в ConvertTimeStamp первым параметром передать нужную дату-время.
Пример, для выборки из highload блока с пользовательским свойством даты строк начиная с минус 2 недели от текущей минуты
Код
$days = 14;
$rsData = $strEntityDataClass::getList(array(
   'filter' => array(
      ">=UF_DATE_CREATE" => array(ConvertTimeStamp(time()-86400 * $days, "FULL")),
   ),
));
$res = array();
while ($arItem = $rsData->Fetch()){
   $res[] = $arItem;
}
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Наверх