04. april 2008 - 22:20
Der er
4 kommentarer og 1 løsning
Skal bruge en sum af tid mellem to tidspunkter
Jeg skal bruge summen mellem to tidspunkter, måned og år, og tænkte at bruge dette: SELECT SUM(tid) AS sumtid FROM rapport WHERE MONTH(dato) BETWEEN $startmaaned AND $slutmaaned AND YEAR(dato) BETWEEN $startaar AND $slutaar Det fungerer godt nok så længe $startaar og $slutaar er det samme, men så snart de er uens får jeg 0 i resultatet - hvad gør jeg galt?
Annonceindlæg fra Sprint365
2c
Nybegynder
04. april 2008 - 22:58
#1
Jeg gætter på at MONTH(dato) returnerer en integer. Det ville være bedst hvis du havde en dato, eller lavede en dato med din mdr og år, så du bare kunne sige: WHERE dato BETWEEN $startdato AND $slutdato
05. april 2008 - 04:43
#2
2c's forslag er absolut det rigtige forslag. SELECT SUM(tid) AS sumtid FROM rapport WHERE 12*YEAR(dato)+MONTH(dato) BETWEEN 12*$startaar+$startmaaned AND 12*$slutaar+$slutmaaned bør også virke. Men det svarer altså lidt til at køre fra København til Roskilde ved at køre 25000 km mod øst !
05. april 2008 - 13:27
#3
2c > jeg har valgt din løsning og laver bare to datoer: $startdato = $startaar . "-" . $startmaaned . "-01"; $slutdato = $slutaar . "-" . $slutmaaned . "-" . $slutdag; hvor $slutdag laves sådan: $slutdag = date('t', mktime(0, 0, 0, $slutmaaned, 1, $slutaar)); og til sidst sql: SELECT SUM(tid) AS sumtid FROM rapport WHERE dato BETWEEN '$startdato' AND '$slutdato' Send et svar, så får du point :)