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