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

Выборка пользователей по дате дня рождения

00 голосов
6
Подскажите, как выбрать пользователей с определенной датой рождения (например пользователи, у которых день рождения завтра или сегодня, или в этом месяце). Я нашел в API CUser::GetList() - там в параметрах есть поле "PERSONAL_BIRTHDAY_1" => "дата рождения с" и "PERSONAL_BIRTHDAY_2" => "дата рождения по". Но в них нужно устанавливать дату рождения, а не день рождения. Например человек родился 20.12.1983, а для дня рождения нужно 20.12.yyyy (yyyy - текущий год).

Есть конечно вариант - выбрать всех, а потом парсить поле PERSONAL_BIRTHDAY у каждого и проверять, но это очень дорогостоящая операция (пользователей примерно 1200)
спросил 11 Сен, 13 от Wildberry (120 баллов)

6 Ответы

00 голосов
$DB->Query('
SELECT *
FROM b_user
WHERE PERSONAL_BIRTHDATE LIKE "dd.mm%"
')

dd - день
mm - месяц
ответил 11 Сен, 13 от krivedko (500 баллов)
00 голосов
эээ. проглючило. стер.
ответил 07 Дек, 13 от salo (840 баллов)
00 голосов
Я вчера написал что-то подобное, только там PERSONAL_BIRTHDAY вместо PERSONAL_BIRTHDATE. Жаль, что стандартными средствами API битрикс тагого не сделаешь.
ответил 20 Март, 14 от Wildberry (120 баллов)
00 голосов
Пока не описано в документации.
Но API поддерживает такую возможность.

$boundary_date = Date("m-d");
$db_cur_users = CForumUser::GetList(array(), array("PERSONAL_BIRTHDAY_DATE" => $boundary_date));
ответил 12 Июль, 14 от Olly (820 баллов)
00 голосов
Цитата
Denis Sharomov пишет:
Пока не описано в документации.
Но API поддерживает такую возможность.


Денис, большое спасибо за информацию.

Аналогичная проблема возникает периодически. Заказчики в последнее время активно внедряют элементы CRM на своих сайтах, и куда же в них без дня рождения, например.
ответил 12 Ноя, 14 от krivedko (500 баллов)
00 голосов
Цитата
Denis Sharomov пишет:
Пока не описано в документации.
Но API поддерживает такую возможность.

$boundary_date = Date("m-d");
$db_cur_users = CForumUser::GetList(array(), array("PERSONAL_BIRTHDAY_DATE" => $boundary_date));


В документации это уже описано, тем не менее нормально не работает - выборка идет только по тем пользователям, которые имеют запись в таблице пользователей [B]форума/B]. Мне же не нужна привязка к форуму - нужно смотреть всех пользователей. Поэтому придется использовать прямой запрос smile:(
ответил 09 Март, 15 от krayya (100 баллов)

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

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