Сохранение временных диапазонов в базе данных mySQL и сравнение с текущим временем - PullRequest
1 голос
/ 19 мая 2011

У меня есть таблица базы данных, в которой хранятся часы работы магазина в виде временного интервала в виде VARCHAR, например, «9:00 - 17:00» и «9:00 - 15:00, 17:00 - 23:00».Я хочу сравнить эти часы работы с текущим временем, поэтому, если текущее время - 2 часа дня, я буду использовать PHP для отображения текста о том, что магазин открыт, а если текущее время - 11:30 вечера, магазин будет показанкак закрыто.

  1. Как сравнить текущее время с временным диапазоном часов в таблицах
  2. Подходит ли мой метод хранения временного диапазона?

Я использую Codeigniter, так что если есть полезные функции, дайте мне знать тоже!

Ответы [ 3 ]

3 голосов
/ 19 мая 2011

Вы должны использовать 2 столбца (один для времени открытия, другой для времени закрытия), оба типа данных TIME: http://dev.mysql.com/doc/refman/5.1/en/time.html

После этого вы можете использовать BETWEEN и * 1006.*: SELECT * FROM shop WHERE CAST(NOW() AS TIME) BETWEEN open_time AND close_time;

Изменить, чтобы включить определение таблицы:

CREATE TABLE shop_hours (
  shop_id INT UNSIGNED NOT NULL,
  day_of_week INT UNSIGNED NOT NULL, -- 0-6
  open_time TIME NOT NULL,
  close_time TIME NOT NULL,
  PRIMARY KEY(shop_id, day_of_week, open_time, close_time)
);
1 голос
/ 19 мая 2011

Используйте два столбца в 24-часовом формате.Это удобнее для компьютеров, и вы сможете использовать стандартные численные сравнения.Вы всегда можете конвертировать в AM / PM при печати. ​​

1 голос
/ 19 мая 2011

Я бы настоятельно рекомендовал вместо этого два отдельных столбца: один для времени открытия и один для времени закрытия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...