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

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

InputLagвыборки по времени работе делать
Удобнее при первом варианте хранения.
...
Рейтинг: 0 / 0
04.03.2015, 10:30:05
    #38894320
InputLag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как записывает время работы в БД
Akina, есть еще варианты, где-то видел записывать некие числовые значение в строку, потом их "парсить" определенным способом
но тут прикинул, наверное можно и строкой - затем ее "парсить", чтобы получить время Начала и Конец
...
Рейтинг: 0 / 0
04.03.2015, 10:34:00
    #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
04.03.2015, 10:49:08
    #38894349
InputLag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как записывает время работы в БД
tanglir, вы какой способ имели ввиду?
Еще забыл! Нужно еще помнить и время перерыва!
А он тоже плавающий, и в разные дни бывает разный
...
Рейтинг: 0 / 0
04.03.2015, 11:01:59
    #38894363
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как записывает время работы в БД
InputLagвы какой способ имели ввиду?с 14 столбцами :)
...
Рейтинг: 0 / 0
04.03.2015, 11:09:06
    #38894374
alex564657498765453
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как записывает время работы в БД
поля
день-недели, начало, конец работы. ... на каждый день будет две записи, с утра до обеда, с обеда до вечера.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

влюбом случаем гадать можно долго, ТС похоже уже забил, если судить по его желанию описать точно ситуацию.
...
Рейтинг: 0 / 0
05.03.2015, 12:39:36
    #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
05.03.2015, 12:44:46
    #38895818
InputLag
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Кто как записывает время работы в БД
как-то так
Код: sql
1.
ix_tmtbl(dayInt,PeriodInt,tm_from,tm_to)


честно ни разу не делал индекс по полю Дата и Время (как оно будет работать не знаю)
...
Рейтинг: 0 / 0
05.03.2015, 15:00:16
    #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
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Кто как записывает время работы в БД / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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