powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Функция вхождения в интервал времени
16 сообщений из 16, страница 1 из 1
Функция вхождения в интервал времени
    #39951865
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
В таблице организаций хранится период времени:
Код: plaintext
1.
2.
3.
4.
5.
6.
Name     Idle_start  Idle_end
Company1 00:00       06:00
Company2 17:00       23:00
Company3 02:00       08:00
Company4 21:00       03:00
Company5 18:00       00:00

Как видно, период может переходить через полночь. А может и не переходить. Или одним своим краем "касаться" полночи.
Посоветуйте пожалуйста, функцию для проверки вхождения текушего времени в указанный таким способом временной интервал.

Спасибо!
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951870
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
логика простая:
Idle_end:= IF (Idle_start>Idle_end, Idle_end + 24:00, Idle_end)
далее просто сравнивайте входящее значение с границами интервала
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951872
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
логика простая:
Idle_end:= IF (Idle_start>Idle_end, Idle_end + 24:00, Idle_end)
далее просто сравнивайте входящее значение с границами интервала


Код: plaintext
Company4 21:00       03:00
Входящее значение 01:00

idle_end+24 = допустим, получается "27:00"
сравниваем 01:00 с интервалом [21:00 - 27:00]

не получается
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951873
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder
А может и не переходить.
И как это узнать? И на сколько суток переходит?
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951874
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
GunPowder
А может и не переходить.
И как это узнать? И на сколько суток переходит?

Как узнать - конец интервала численно меньше начала интервала (имеет место переход через полночь)

временной круг ограничен 24 часами
дата в контексте этой задачи вообще не существует
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951876
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder,

тогда вообще логики нет, задача нерешаема.
Неизвестно входящее значение 01:00 с утра этого дня или после полуночи следующего
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951877
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
GunPowder,

тогда вообще логики нет, задача нерешаема


Ещё как есть. Вы же например, спите? Ложитесь например, в 23:30 а встаёте, в 7:30 (например). И это происходит каждый день, без всякой привязки к дате.

Напишите функцию проверки, спите вы в данный момент или нет
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951878
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder,

мы поменялись ролями? я студент выпреподаватель?
Объясните мне в вашем примере
Код: plaintext
1.
Company4 21:00       03:00
Входящее значение 01:00 
Входящее значение - в начале дня (слева от 21:00) или это после 21-00?
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951879
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder,

да, забыл, про мой сон - я ложусь и сплю с учетом даты, по крайней мере с учетом дня недели
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951880
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
GunPowder,

мы поменялись ролями? я студент выпреподаватель?
Объясните мне в вашем примере
Код: plaintext
1.
Company4 21:00       03:00
Входящее значение 01:00 
Входящее значение - в начале дня (слева от 21:00) или это после 21-00?


Company4 "спит" с 21:00 до 03:00 (спит 6 часов)
Следовательно, время 01:00 (час ночи) входит в интервал [21:00 - 03:00] (с 9 вечера до 3 ночи)
Для человека это очевидная вещь, а вот как это описать в функцию?

Alex_Ustinov
GunPowder,
да, забыл, про мой сон - я ложусь и сплю с учетом даты, по крайней мере с учетом дня недели

сейчас это не принципиально. Ктото ложится заполночь, а встаёт к обеду
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951883
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder
Alex_Ustinov
GunPowder,

мы поменялись ролями? я студент выпреподаватель?
Объясните мне в вашем примере
Код: plaintext
1.
Company4 21:00       03:00
Входящее значение 01:00 
Входящее значение - в начале дня (слева от 21:00) или это после 21-00?


Company4 "спит" с 21:00 до 03:00 (спит 6 часов)
Следовательно, время 01:00 входит в интервал [21:00 - 03:00]
Для человека это очевидная вещь, а вот как это описать в функцию?
да это неочевидно. Очевидо стало когда вы добавили условие, что проверяемый час всегда больше Idle_start.
В этом случае делайте также как и с конечной границей.
Idle_INPUT:= IF (Idle_start>Idle_INPUT, Idle_INPUT + 24:00, Idle_INPUT)
и сравнивайте.
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951888
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowderсейчас это не принципиально. Ктото ложится заполночь, а встаёт к обедупокажите учебник, откуда задача, чтобы понять кто как встает, принципиально или нет.
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951889
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov
GunPowder
пропущено...
Company4 "спит" с 21:00 до 03:00 (спит 6 часов)
Следовательно, время 01:00 входит в интервал [21:00 - 03:00]
Для человека это очевидная вещь, а вот как это описать в функцию?
да это неочевидно. Очевидо стало когда вы добавили условие, что проверяемый час всегда больше Idle_start.
В этом случае делайте также как и с конечной границей.
Idle_INPUT:= IF (Idle_start>Idle_INPUT, Idle_INPUT + 24:00, Idle_INPUT)
и сравнивайте.


Извините, я не говорил что "проверяемый час всегда больше Idle_start"
Попробую ещё по другому

Список сотрудников работающих в 3 смены
У каждого указано когда он ложится и когда встаёт
Все разбросаны по суткам, но все спят какое-то время

Определить, можно звонить сотруднику по телефону или он в данный момент спит, либо, всех спящих в данный момент
Необходимость это сделать может возникнуть в любой момент времени
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951900
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder
В таблице организаций хранится период времени:
Код: plaintext
1.
2.
3.
4.
5.
Name     Idle_start  Idle_end
Company1 00:00       06:00
Company2 17:00       23:00
Company3 02:00       08:00
Company4 21:00       03:00
Company5 18:00       00:00

Нормализуйте данные и не майтесь [censored]!

Код: plaintext
1.
2.
3.
4.
5.
6.
Name     Idle_start  Idle_end
Company1 00:00       06:00
Company2 17:00       23:00
Company3 02:00       08:00
Company4 21:00       24:00
Company4 00:00       03:00
Company5 18:00       24:00
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951909
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunPowder,

Если ничего не напутал, то как-то так:
Код: sql
1.
'01:00' BETWEEN Idle_start AND Idle_end OR (Idle_end < Idle_start AND ('01:00' <= Idle_end OR Idle_start <= '01:00'))

Вместо '01:00' подставлять проверяемое время.
...
Рейтинг: 0 / 0
Функция вхождения в интервал времени
    #39951915
GunPowder
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft
GunPowder,
Если ничего не напутал, то как-то так:
Код: sql
1.
'01:00' BETWEEN Idle_start AND Idle_end OR (Idle_end < Idle_start AND ('01:00' <= Idle_end OR Idle_start <= '01:00'))

Вместо '01:00' подставлять проверяемое время.


То, что надо!
Большое Вам спасибо!
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Функция вхождения в интервал времени
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]