Allen,

Als je uren of minuten o.i.d. moet opslaan in een database als welk (nummer) type zou jij het dan opslaan?
Je wilt bijvoorbeeld een 40 uur durende werkweek opslaan, is 40 dan een int, float, double, decimal, ..?

Bvd
Hangt een beetje van de nauwkeurigheid af.

Wil je ook halve of kwart uren kunnen registreren dan zeg ik decimal, wil je alleen hele uren opslaan dan zeg ik integer.
Wat dacht je van een DATETIME of DATE veld? Die zijn er immers voor gemaakt.
Daarmee kan je heel nauwkeurig mee rekenen.
Pipo, dan denk ik eerder integer. of zijn er ook mensen die 32,5 uur per week werken of zo?

Bart, Het gaat hier niet om een datum.

Dos, (Helaas) geen postgre, op die stack link die je post noemen ze time?
Kan (en is het wel goed) als time meer dan 23 uur opslaat? Werkweek van 40 uur wordt dan opgeslagen als 40:00:00.
"If the intervals you're concerned with are less than 838 hours"
23 < 838

PS. de shorthand voor PostgreSQL is vreemd genoeg postgres
Bedankt, dus 838:00:00 is de max. Vreemde keuze maar komt in dit geval wel goed uit dan :)
Ik zal de uren als TIME opslaan.

PS: Thanks ;)

Toevoeging op 15/04/2014 12:12:43:

Heb je daar trouwens een bron van? Geldt die range tot 838 alleen voor MySQL?

Ik zie dat MS Server '12 namelijk range 00:00:00.0000000 tot 23:59:59.9999999 gebruikt.
"Vreemde keuze maar komt in dit geval wel goed uit dan :)"
Het heeft er waarschijnlijk mee te maken dat het -83x uur tot en met +83x aan kan EN tot 6 cijfers achter de komma.

INTERVAL is een ANSI SQL standaard die (voor zover ik weet) jammer genoeg nog niet in SQL Server of MySQL zit.
Je kunt het altijd in het aantal minuten in een int opslaan. minuten lijkt me klein genoeg, als je het daar niet mee eens bent kun je altijd zelf nog iets kleiner kiezen.

PS. bron: http://dev.mysql.com/doc/refman/5.0/en/time.html
Bedankt voor je reactie.

Dus TIME(/INTERVAL) 40:00:00 en niet geschikt voor alle databases
of INT 2400 (40*60)

Ik denk dan toch voor het laatste. Je weet nooit wat voor database er nog is achter komt.
Interessant. LIMIT gebruik ik dan weer wel.
Er zullen altijd wel functies zijn die de één wel en de ander niet kent.
Als ik die lijsten zo zie, schommelt het aardig.
Een uitgebreide set van query's die op alle databases werkt, zal onmogelijk zijn.

Reageren