在我的商店數據庫中,我需要營業時間。你有一個想法,我可以在我的dB中實現這個嗎?SQL用於營業時間
的開放時間爲週一至週日,每天可以有2個開放的窗口(前09:00-12:00,16:00-19:00)
在我的商店數據庫中,我需要營業時間。你有一個想法,我可以在我的dB中實現這個嗎?SQL用於營業時間
的開放時間爲週一至週日,每天可以有2個開放的窗口(前09:00-12:00,16:00-19:00)
建一個表,把它schedules
,將外鍵添加到shops
表主鍵,Day of week
字段,time_open
,time_closed
。 數據應該是這個樣子:
shop_id day_of_week time_open time_closed
1 1 09:00 12:00
1 1 16:00 19:00
1 2 09:00 12:00
1 2 16:00 19:00
1 3 09:00 12:00
1 3 16:00 19:00
1 6 10:00 14:00
2 1 09:00 12:00
2 1 13:00 18:00
這將使你建立任何形式安排的機會,儘可能多的窗口,只要你想,你需要多少個例外。這是普遍的,僅限於它期望所有星期都相同的事實。沒有考慮假期,也不是某人可能使用的奇怪/偶數週的時間表。
編輯:
隨着朱利安的問題,有關工作一晚上生意的時間,它已經到了我的注意,以前的解決方案是不遠處的最佳蒲式耳。您不能在20:00開放酒吧,06:00關門,並且比較當前時間(02:45)是否在這個時間間隔內,因爲它不會。這就是爲什麼,最方便的方式不是登記結束時間,而是以便利的計量單位(例如分鐘)記錄總工作時間。
shop_id day_of_week time_open working_time
1 1 09:00 180
1 1 16:00 180
1 2 09:00 180
1 2 16:00 180
1 3 09:00 180
1 3 16:00 180
1 6 10:00 240
2 1 09:00 180
2 1 13:00 300
你正在使用什麼類型的數據庫?如果是mysql,請輸入「time」類型的字段。然後你可以傳遞它的時間,並對它們進行基本的SQL時間操作。這整個文章假定mysql。
如果只有一家店,而且您知道這家店永遠不會增長,那麼只需製作一張名爲「時間」的表格,您可以保持店鋪的開放時間。然後,如果您想查看商店是否處於開放狀態,只需根據數據庫中的某個範圍檢查當前時間。
如果有多個商店,請創建一個名爲「times」的表格和一個名爲「stores」的表格。在時間表中,列可以使用名爲「store_id」的ID「打開」和「關閉」。商店表也需要一個id。然後,你可以說:
"SELECT open, close FROM times WHERE store_id=x"
這會給你所有與特定商店相關的時間範圍。
這將允許您爲特定日期添加第三個時間表,如果這違反了您的規則,則需要嚴格控制添加新時間表以檢查該時間表,或者您可以添加「 sched_num「列的檢查約束條件是它是0或1,以及day_of_week和sched_num上的唯一約束。 – 2010-04-27 19:07:29
這是處理晚上營業時間的更好方法,就像酒吧一樣,營業時間從晚上10點到上午04點。添加兩個條目(day1:22:00-> 23:59和day2:00:00-> 04:00)?或一個條目(第1天:22:00-> 04:00)? – Julien 2012-02-27 00:18:36
有趣的問題。在這種情況下,重新做出這種情況是最合理的。查看編輯的回覆。 – AlexanderMP 2012-03-02 02:46:12