powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кто как записывает время работы в БД
21 сообщений из 21, страница 1 из 1
Кто как записывает время работы в БД
    #38894252
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите лучшие приемы исходя из вашего опыта.
Нужно хранить в базе время работы магазинов.
1. С Понедельника по Воскресенье
2. Каждый день может быть разный график работы!
Один и тот же магазин может работать так:
В понедельника может быть с 8.00 до 19.00
Во вторник с 9.00 до 19.00
В какой-то день круглосуточно может быть
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894254
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зависит от того, что потом с этим нужно делать.
Я пишу просто строкой и мне этого достаточно.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894300
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вариантов-то не дофига. Всего два.
Первый - хранить диапазоны ОТ-ДО. Хранение строкой, как сказал miksoft - это вариация такого подхода.
Второй - хранить изменение состояния ОТКРЫЛСЯ/ЗАКРЫЛСЯ.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894311
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoft, да можно строкой
но мне мне такое не подходит
мне нужно будет значки на сайте ставить работает ли сейчас магазин или нет
выборки по времени работе делать и т.д.

на данный момент имею на руках базу, где 14 столбцов, которые относятся ко времени работы
С Пн по Вс
время начало работы для каждого дня недели и время окончания)
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894317
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLagмне нужно будет значки на сайте ставить работает ли сейчас магазин или нет
Удобнее при втором варианте хранения.

InputLagвыборки по времени работе делать
Удобнее при первом варианте хранения.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894320
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, есть еще варианты, где-то видел записывать некие числовые значение в строку, потом их "парсить" определенным способом
но тут прикинул, наверное можно и строкой - затем ее "парсить", чтобы получить время Начала и Конец
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894325
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLag, ну это не такой уж и хреновый вариант
InputLagработает ли сейчас магазин или нетДумаю, анализатору хватит ума проверять только одно из семи условий:
Код: sql
1.
2.
3.
4.
5.
6.
where 
 weekday(curdate())=1 and hour(curtime) between day1_start and day1_end
 or
 ...
 or
 weekday(curdate())=7 and hour(curtime) between day7_start and day7_end
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894349
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
tanglir, вы какой способ имели ввиду?
Еще забыл! Нужно еще помнить и время перерыва!
А он тоже плавающий, и в разные дни бывает разный
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894363
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLagвы какой способ имели ввиду?с 14 столбцами :)
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894374
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поля
день-недели, начало, конец работы. ... на каждый день будет две записи, с утра до обеда, с обеда до вечера.

индекс составной, день недели, начало работы, конец.

работает если можно найти где день недели равен текущему, и текущее время между началом и концом.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894422
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

А ещё есть магазинчики с двумя перерывами ... а ещё есть такие, что работают тока 1-й, 3-й "понедельник" месяца, а то и ваще "по звонку" (особенно у моделистов)... :)
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894476
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109alex564657498765453,

А ещё есть магазинчики с двумя перерывами ... а ещё есть такие, что работают тока 1-й, 3-й "понедельник" месяца, а то и ваще "по звонку" (особенно у моделистов)... :)

тем более мой вариант
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894480
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109,

а расписание , чтоб разное можно делать так.

так как основа, это понедельное расписание ---большинство случаев, то его берём за основу.
а дополнительным полем специфицируем...
тогда выборка по индексу, даст работу хоть когда нибудь в указаный день недели, и возможно отсеиться по дополнительному критерию...

это я исхожу из того, что магазинов будет дофигища, и малая часть не влазит в рамки недельного расписания.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894487
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В одном схожем случае, когда сложно заранее формализовать все критерии, у нас в таблице строкой хранится выражение в SQL-синтаксисе, которое используется для построения результирующего запроса.

Так получается максимальная гибкость вычислений, но минимальная гибкость корректировки, т.к. править эту таблицу могут всего 1-2 человека из программистов.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894566
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex564657498765453,

:) Только кажется, но или по задаче. Когда-то давно, парсил 2ГИС ... таких "магазинчиков" со спец. расписанием оказалось нифига не мало.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38894750
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InputLagесть еще вариантыНет.
Либо начало и конец одного периода (причём не обязательно одного - возможно и нескольких пачкой, скажем, за неделю) в одной записи, либо в разных. Третьего не бывает.

InputLagгде-то видел записывать некие числовые значение в строку, потом их "парсить" определенным способомЭто - вариант нумер один. Просто реализация хитрожопая - на мой взгляд, даже излишне.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38895496
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109alex564657498765453,

:) Только кажется, но или по задаче. Когда-то давно, парсил 2ГИС ... таких "магазинчиков" со спец. расписанием оказалось нифига не мало.

нифига не мало, это сколько ? 1%??? пол процента?
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38895521
alex564657498765453
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а главное - про разные расписания в разные понедельники...это тут 5 копеек со стороны вставили. ТС не задавал такой критерий.

с другой стороны можно пойти таким способом

вести поле периодичность 1- еженедельно, 2 ежемесячно, 3 ежегодно, 4 точно. и включить первым в индекс,

итого предполагаемые 4 совпадения.
тогда можно будет даже задать, что по пятницам магазин до 2200, но по тринадцатым числам до 0000, но 5 марта до 0100, а 8 октября 2020 года до 0200

влюбом случаем гадать можно долго, ТС похоже уже забил, если судить по его желанию описать точно ситуацию.
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38895808
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я тут прочитал
определил для себя вот так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE IF NOT EXISTS `TimeTable` (
 `idMag` int(5) unsigned NOT NULL, -- id Магазина
 `dayInt` TINYINT(1) NOT NULL, -- День числовое значение
 `PeriodInt` TINYINT(1), -- Период: до обеда - 1 и после обеда -2
 `tm_from` time, -- Время начала работы
 `tm_to` time, -- Время конец работы
 INDEX ix_tmtbl(?????)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;



как сделать составной ключ лучше?
я полагаю на idMag составной не нужен там будет
выборки будут разные......
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38895818
InputLag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как-то так
Код: sql
1.
ix_tmtbl(dayInt,PeriodInt,tm_from,tm_to)


честно ни разу не делал индекс по полю Дата и Время (как оно будет работать не знаю)
...
Рейтинг: 0 / 0
Кто как записывает время работы в БД
    #38896094
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не мудрствуя лукаво и обед держать... Дабы потом не искать механизм нахождения часов обеда... и дни недели... обычная задача, решается в лоб...

Shop Typ DayTyp h1 h2Веснушка рабвремя 1/2/3/4/5 8-00 12-00 Веснушка ОБЕД 1/2/3/4/5 12-00 13-00Веснушка рабвремя 1/2/3/4/5 13-00 17-00Веснушка рабвремя 6 10-00 15-00 Веснушка Выходной 7
таким образом можете держать обеды в разные дни, разное время работы по дням недели... и т.д. и т.п.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кто как записывает время работы в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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