За последние 24 часа нас посетили 20085 программистов и 1082 робота. Сейчас ищут 857 программистов ...

Посчитать количество ночей

Тема в разделе "MySQL", создана пользователем JohnBraxton, 31 янв 2020.

  1. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    41
    Симпатии:
    0
    Коллеги приветствую и прошу помощи в решении задачи.

    В MySQL есть 2 даты формата:
    Код (Text):
    1. $start = '2020-01-01 21:00:00';
    2. $end = '2020-01-03 07:00:00';
    Разумеется значения могут быть разные.

    Мне нужно посчитать количество ночей если (по условию) начало ночи начинается в 21 час и заканчивается 7 часов утра.

    Всю голову сломал как это сделать. На ум пришло только формирования массив из 2-х дат и проверки в цикле вхождения интервала времени между 2-мя датами.

    Может кто то выполнял что то подобное? Помогите пжл.
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Интервал может начинаться или оканчиваться ночью? Посчитать необходимо количество полных ночей?
     
  3. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    41
    Симпатии:
    0
    Суть такая. Эти даты это стоянка транспортных средств на территории. Если машина заехала после 21 и простояла на территории хоть 2 минуты - следовательно это ночная стоянка. Вот мне нужно посчитать количество таких ночей.
     
  4. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Жёстко. Ок, надо подумать.
     
  5. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    41
    Симпатии:
    0
    Нет нет. Дело не в сборе средств а в выводе отчета сколько ночей простояла машина в интервале 2-х дат.
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    @JohnBraxton А если машина более одного раза за одну ночь заезжала на стоянку, это считать как один раз или много?
    --- Добавлено ---
    Первое что напрашивается, это обнаружение пересечения двух временных интервалов — моя любимая задача :)
    (А, Б) пересекается с (Х, Ч) если
    А < Ч и Б > Х
    Таким образом можно установить факт заезда в ночь — для одной конкретной ночи. Дальше масштабируем задачу для N ночей. Если несколько заездов в одни сутки тарифицируются как один, то группируем по дням.
     
  7. JohnBraxton

    JohnBraxton Активный пользователь

    С нами с:
    13 окт 2011
    Сообщения:
    41
    Симпатии:
    0
    Случаев что машина заезжала 2 раза не было ни разу как и то что она отстояла 2 минуты =). Этот факт я исключаю, следовательно даже если и будет - буду группировать.

    То есть получается копал я в нужную сторону. Формировать массив и в цикле искать вхождение в интервал времени.
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Я хз куда ты копал. Если данные в MySQL, то не надо никаких массивов. База тебе всё посчитает, только попроси.

    Моя формула это подарок, с ней ты решишь всё ;)