Страница 1 из 1
Определить количество дней недели в промежутке времени
Добавлено: 16 сен 2018, 21:23
bmite
Здравствуйте! У меня есть две даты, мне нужно определить, сколько (например) понедельников в этом промежутке времени? Стандартная функция "Разница в днях" и ее настройка мне не подходят. Буду благодарен любой информации.
Re: Определить количество дней недели в промежутке времени
Добавлено: 17 сен 2018, 11:24
Евгений
Пусть Дата1 начальная и Дата2 конечная даты заданного промежутка. Тогда делаем так:
1. Сдвигаем обе даты назад на одинаковое количество дней, равных номеру дня недели у Дата1.
2. Вычисляем разницу в днях, которую делим нацело на 7. Полученное число даёт неполное количество понедельников между двумя датами. Может не хватать одного дня, который попадает в остаток от деления.
3. Сравниваем номер дня недели у Дата2 с номером искомого дня (например понедельник == 1). Если первое число больше второго, тогда к числу из п.2 добавляем 1.
Можно свернуть всё в одну формулу, чтобы подставить в поле MySQL. Хотя я бы просто вынес в хранимую функцию СУБД.
Re: Определить количество дней недели в промежутке времени
Добавлено: 17 сен 2018, 11:40
support
Делайте хранимую функцию, подсмотреть код можно в поле "Разница в днях". Хранимую функцию можно использовать в формулах.
Re: Определить количество дней недели в промежутке времени
Добавлено: 17 сен 2018, 13:45
bmite
Спасибо за рекомендации, но моих "суперсособностей" в программировании не хватило и я пошел по другому нубскому пути.
Возможно кому-то поможет
Я посчитал через стандартную функцию (Разница в днях) по раздельности для:
ПН, ВТ, СР, ЧТ, ПТ, СБ, ВС
И в зависимости от того, какой день недели мне требуется - вывел число и сделал расчет.