Openingstijden in je database

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Peetz0r
  • Registratie: Mei 2009
  • Laatst online: 08-09 22:28
Hoe kun je het beste openingstijden opslaan in een (MySQL) database, zodat je ook erin kunt zoeken?
Bijvoorbeeld: 'ik zoek een supermarkt die vrijdagavond om 20:00 nog open is'.

Het enge wat ik kon bedenken was om 14 kolommen te maken,voor elke dag de open- en sluittijd apart.
Is dit de beste oplossing? Heeft iemand een andere oplossing? Misschien iets met een aparte tabel, maar misschien juist niet?

Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:45

DukeBox

loves wheat smoothies

gewoon timedate.. kan je ook het meest makkelijk mee rekening (als in, nergens vertalen naar timestamps) en daar naast een bool 'open' of 'close' o.i.d.

[ Voor 18% gewijzigd door DukeBox op 23-04-2012 16:46 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

DukeBox schreef op maandag 23 april 2012 @ 16:44:
gewoon timedate.. kan je ook het meest makkelijk mee rekening (als in, nergens vertalen naar timestamps) en daar naast een bool 'open' of 'close' o.i.d.
Beetje kort door de bocht. Hoe wil je aangeven dat een winkel elke vrijdag van 9:00 tot 18:00 open is met datetime-velden?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Peetz0r
  • Registratie: Mei 2009
  • Laatst online: 08-09 22:28
DukeBox schreef op maandag 23 april 2012 @ 16:44:
gewoon timedate.. kan je ook het meest makkelijk mee rekening (als in, nergens vertalen naar timestamps) en daar naast een bool 'open' of 'close' o.i.d.
Maar hoe doe je dat dan, een week heeft 7 dagen, waarop een winkel open en dicht gaat. Dus dan heb ik alweer 14 kolommen nodig. Ik vroeg me af of dit beter kan?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dagnummer in één kolom, openingstijd in één kolom, sluitingstijd in één kolom, klaar? Gewoon een record per dag.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Gtoniser
  • Registratie: Januari 2008
  • Laatst online: 07:45
Mocht je winkel dan bijvoorbeeld tussen de middag dicht zijn of tot na 12en open zijn (volgende dag) kun je natuurlijk meerdere records per dag gebruiken (iets wat in de kolommen optie niet mogelijk is)

Acties:
  • 0 Henk 'm!

  • teh_twisted
  • Registratie: Oktober 2005
  • Laatst online: 30-07 23:56
Niet dat ik dit aanraad maar een DB waar ik (helaas) een keer mee gewerkt het had het opgelost door die informatie te serialisieren en dan in een varchar veld te plompen. Oftwel, je moest eerst uitlezen en dan pas kon je rekenen.

Ik zou het lekker simpel houden en gewoon per dag 3 kolommen aanmaken (gewoon losse tabel gebruiken en die linken) en dan kolom 1 openingstijd, kolom 2 sluitings en kolom 3 pauzes.

Tijden zijn gewoon rot om mee te werken ;) En timestamps wil je al niet aan beginnen want dan krijg je 't gerommel met extra info dat je niet nodig hebt, enige wat je wilt weten is open en sluiten.

Bedacht me hier ineens dat je het ook zo kan doen:

1 kolom met daarin gewoon 0830, 2000, 1200, 1300
Dan heb je dus je open en sluitingstijd en pauze. Hoewel gewoon domweg 3 kolommen veel simpeler is ;)

Natuurlijk, heb je per dag een aparte kolom nodig want winkels vinden het handig afwijkende tijden per dag te hanteren (wie dat bedacht heeft...)

Tyan S7025, 1x Xeon E5520, 32GB DDR3-1333 ECC/REG, GTX275 896MB, 2x Samsung SM 2243SN, Logitech Perf MX. Laptop: MBP 10,1/6,2. Cams: Canon EOS600D+Tamron AF18-200, Sony W350. Gadgets: iPad 64GB 3G, iPhone 5 64GB, PS1-3. Auto: W211 E220CDI


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:45

DukeBox

loves wheat smoothies

NMe schreef op maandag 23 april 2012 @ 16:47:
Beetje kort door de bocht. Hoe wil je aangeven dat een winkel elke vrijdag van 9:00 tot 18:00 open is met datetime-velden?
Ah.. ja, stom.. het is natuurlijk niet een planner, maar een herhalend iets.
dan een bool met de dagen van de week (of int 0-6), en 2x een time (van / tot).

edit, wat idd NMe al aangeeft.

Evt. aangevuld met een date waar 0000-00-00 default is (dus herhaling) en 2012-04-23 een extra toevoeging is. (meot je zelf besluiten of je de herhaling dan overruled)

Dus voor 1 winkel, ma=0 de normale openingstijden:
0000-00-00,0,12:00,18:00
0000-00-00,1,10:00,18:00
0000-00-00,2,10:00,18:00
0000-00-00,3,10:00,18:00
0000-00-00,4,10:00,18:00
0000-00-00,5,09:00,17:00
0000-00-00,6,12:00,17:00
2012-04-23,0,11:00,22:00

@hieronder, het idee is leuk maar een string is niet handig wanneer je met datums wilt rekenen.

[ Voor 43% gewijzigd door DukeBox op 23-04-2012 17:09 ]

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • Juup
  • Registratie: Februari 2000
  • Niet online
Of je gebruikt 2 kolommen met ISO Week Dates.
Dan kun je er ook in stoppen dat de winkel met de kerst enzo andere openingstijden heeft.

Edit:
Jaar en week laat je weg om de algemene tijden erin te zetten, en die worden overruled door rows waarbij wel een week (en evt jaar) is ingevuld.

[ Voor 30% gewijzigd door Juup op 23-04-2012 17:08 ]

Een wappie is iemand die gevallen is voor de (jarenlange) Russische desinformatiecampagnes.
Wantrouwen en confirmation bias doen de rest.


Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 12:45

MueR

Admin Tweakers Discord

is niet lief

Makkelijkste is gewoon weekday (1-7 voor maandag-zondag), een open- en sluit-tijd met een nullable date (YYYY-MM-DD). Zo kun je standaard tijden aangeven per weekdag, met daarop als toevoeging een uitzondering voor een specifieke datum.

[ Voor 5% gewijzigd door MueR op 23-04-2012 17:58 ]

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Precies. En als je dan time-velden neemt kun je zelfs met een between-query aan de slag. Moet je alleen rekening houden met uitzonderingsdata zoals kerst waarop je helemaal gesloten bent, omdat je openings- en sluitingstijden dan beiden null zullen zijn. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:45

DukeBox

loves wheat smoothies

Dan neem je gewoon een record op met 2012-12-24,00:00,00:00 o.i.d.

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

DukeBox schreef op maandag 23 april 2012 @ 17:02:
[...]

Evt. aangevuld met een date waar 0000-00-00 default is (dus herhaling) en 2012-04-23 een extra toevoeging is. (meot je zelf besluiten of je de herhaling dan overruled)
Een datum van 0000-00-00 is toch niet geldig volgens de SQL standaard? (MySQL accepteert het uiteraard wel... mja, dat zegt ook weinig).

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

DukeBox schreef op maandag 23 april 2012 @ 19:35:
Dan neem je gewoon een record op met 2012-12-24,00:00,00:00 o.i.d.
Dan heb je het weer lastiger in de "normale" weergave. Neem dan gewoon null op als openings- en sluitingstijd. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • DukeBox
  • Registratie: April 2000
  • Laatst online: 13:45

DukeBox

loves wheat smoothies

Ach ja.. genoeg denkstof om tot een passende oplossing te komen. Iedereen heeft zo wel zijn eigen manier... als DPC stats bouwer heb ik heel wat datum/tijd puzzels voor mijn kiezen gehad :)

Duct tape can't fix stupid, but it can muffle the sound.


Acties:
  • 0 Henk 'm!

  • epic007
  • Registratie: Februari 2004
  • Laatst online: 25-08 11:27
Wolfboy schreef op dinsdag 24 april 2012 @ 16:30:
[...]
Een datum van 0000-00-00 is toch niet geldig volgens de SQL standaard? (MySQL accepteert het uiteraard wel... mja, dat zegt ook weinig).
MySQL heeft toch gewoon een TIME datatype? http://dev.mysql.com/doc/refman/5.5/en/time.html
Pagina: 1