Avatar billede Six Nybegynder
29. januar 2008 - 06:30 Der er 13 kommentarer og
1 løsning

MySQL: Datoformat og Between

Hej eksperter :)

Jeg sidder med et mindre problem.

Tabel:

+------+---------+---------+-----+----------+
| id  | dagnr  | maaned  | aar | arbtimer |
+------+---------+---------+-----+----------+
| 1    | 24      | January |2008 | 12      |
| 2    | 25      | January |2008 | 9        |
| 3    | 30      | January |2008 | 11      |
| 4    | 15      | February|2008 | 6        |
+------+---------+---------+-----+----------+

Problemet er at jeg vil finde antal arbejdstimer imellem to datoer(Løn perioden) f.eks. går lønperioden fra. d. 20 til d. 20

$sql = "SELECT id,arbtimer, dagnr, maaned, aar, DATE_FORMAT(maaned/dagnr/aar, %m/%d/%y) as timestamp FROM kaldata WHERE timestamp BETWEEN '2007/12/20' AND '2008/01/20'";


Det jeg har der er totalt forkert - det er jeg klar over :) - Men hvordan fa'en finde jeg lige ud af det, når min dato er i 3 forskellige felter?
Avatar billede Six Nybegynder
29. januar 2008 - 06:34 #1
SELECT id,arbtimer, dagnr, maaned, aar, DATE_FORMAT(maaned/dagnr/aar, '%m/%d/%y') as maaned FROM kaldata WHERE maaned BETWEEN '2007/12/20' AND '2008/01/20'

Den her giver ingen fejl, men heller ingen resultater :/
Avatar billede showsource Seniormester
29. januar 2008 - 06:42 #2
Et mysql datoformat er f.ex. 2008-01-29 eller 2008-01-29 06:57:02
Og for at bruge/lege med datoen, skal feltet/kolonnen være date eller datetime
Avatar billede Six Nybegynder
29. januar 2008 - 06:47 #3
Så det vil sige, at jeg bliver nødt til at tilføje et datofelt til min tabel?
Avatar billede showsource Seniormester
29. januar 2008 - 06:56 #4
Jups
Avatar billede showsource Seniormester
29. januar 2008 - 06:57 #5
Eller
Bruge Mysql-standard format, og derefter lave dine beregninger
Avatar billede Six Nybegynder
29. januar 2008 - 06:57 #6
Det løste problemet :D - jeg havde tænkt det, men troede også at der var en måde at undgå det - da det jo i bund og grund er spild af plads.. lige i mit tilfælde :D - men løsningen er fundet, smid et svar :D
Avatar billede Six Nybegynder
29. januar 2008 - 06:58 #7
Mit svar gik på at tilføje et datofelt ;D
Avatar billede nielle Nybegynder
29. januar 2008 - 07:00 #8
... spild af plads>

Ja - det er redundante data. Men du kunne jo overveje at droppe dine nuværende tre kolonner og erstattre dem med den datetime ^)
Avatar billede showsource Seniormester
29. januar 2008 - 07:02 #9
Og hov, du kan godt bruge tal uden bindestreg som datoformat, men har aldrig selv brugt det.

Og du kan også bruge et felt som er INT og bruge tiden i sekunder siden 1-1-1970
FROM_UNIXTIME hedder det vist så. ;O)
Avatar billede Six Nybegynder
29. januar 2008 - 07:03 #10
yeah det har du ret i - men det vil kræve at jeg omkoder hele min kalender, og det er ikke noget jeg vil ud i lige pt;D - men forslaget er jo helt på toppen. :)
Avatar billede Six Nybegynder
29. januar 2008 - 07:04 #11
Fair nok showsource :) - jeg beholder bare bindestregerne indtil videre hehe. Men i skal have mange tak for jeres hjælp og interesse i mit spørgsmål. Husk at smide svar showsource :)
Avatar billede showsource Seniormester
29. januar 2008 - 07:09 #12
Jeg er kun til point i Apache.
Så ikke noget svar herfra...

Pladsen er vel kun selve kolonnerne
Altså, om man har tre kollonner eller en kolonne, vil vel ikke fylde noget videre ?
Avatar billede showsource Seniormester
29. januar 2008 - 07:10 #13
"Gøre nogen forskel"
Avatar billede Six Nybegynder
29. januar 2008 - 07:20 #14
Nej du har nok ret, og da det alligevel bare er til hjemmebrug - så behøves jeg jo heller ikke tænke over det lige nu. Det ville være værre hvis der kom flere hundrede poster ind om dagen. - men mange tak for hjælpen. Så kom jeg da videre i det mindste hehe :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester