Пример кода(размещается перед вызовом метода ShowShop):
$element['type'] = 1;
$element['property_id'] = 123;
$element['prefix'] = ' AND (';
$element['if'] = '!=';
$element['value'] = '';
$element['sufix'] = ')';
$param['select'][] = $element;
$param['sql_external_select'] = ", (SELECT MAX(CONVERT(CONCAT(SUBSTR(shop_properties_items_table.shop_properties_items_value, 7, 4), CHAR(45), SUBSTR(shop_properties_items_table.shop_properties_items_value, 4, 2), CHAR(45), SUBSTR(shop_properties_items_table.shop_properties_items_value, 1, 2)), DATE)
) FROM shop_properties_items_table WHERE shop_items_catalog_table.shop_items_catalog_item_id = shop_properties_items_table.shop_items_catalog_item_id AND shop_list_of_properties_table.shop_list_of_properties_id IN(123, 45, 789))
AS max_date";
$param['items_field_order'] = "(CONVERT(CONCAT(SUBSTR(max_date, 7, 4), CHAR(45), SUBSTR(max_date, 4, 2), CHAR(45), SUBSTR(max_date, 1, 2)), DATE)";
Вместо 123 укажите идентификатор любого имеющегося у вас доп. свойства товаров(желательно то, которое задано у всех товаров). А вместо (123, 45, 789) - укажите перечисление идентификаторов всех ваших 11-ти доп. свойств типа "Дата".
Предложенный метод, конечно, никак не сравнит имеющиеся даты с текущей с целью анализа наиболее близкой к ней, он просто выберет самую большую дату(можете добавить еще ограничение, чтобы она была меньше текущей) среди заданных в доп. свойствах и выберет товары, отсортированные по ней.