12. februar 2009 - 08:03
Der er
8 kommentarer og 1 løsning
Datediff funktion
Er der nogle der har en forklaring og en løsning. select datediff(mm, '2008-02-12', '2008-08-14') = 6 Hvorfor??? Der er jo kun gået 5 måneder. Min teori er at den fortager sin beregning på antal dage, er der nogle der kan bekræfte det? Og er der nogen der har en løsning på det?
Annonceindlæg fra Infor
12. februar 2009 - 08:08
#1
Prøv at tæl en gang til. Der er gået 6 måneder. Start: 2008-02-12 2008-03-12 + 1 måned 2008-04-12 + 2 måneder 2008-05-12 + 3 måneder 2008-06-12 + 4 måneder 2008-07-12 + 5 måneder 2008-08-12 + 6 måneder!!
12. februar 2009 - 08:09
#2
... Og så 2 dage mere for at komme til 2008-08-14. Så der er gået 6 måneder og 2 dage.
12. februar 2009 - 08:11
#3
Jeg kan do informere dig om at datediff når den tæller måneder KUN kigger på måneds info (og år). Dage bliver ignoreret. dvs at datediff(mm, '2008-01-31', '2008-02-01') = 1 måned selv om der faktisk kun er gået en dag...
12. februar 2009 - 08:12
#4
Jeg mente naturligvis: select datediff(mm, '2008-08-14' ,'2009-02-12') Sorry
12. februar 2009 - 08:15
#5
så løsningen må være noget i denne stil: select case when day('2008-08-14') > day('2009-02-14') then datediff(mm, '2008-08-14' ,'2009-02-01') - 1 else datediff(mm, '2008-08-14' ,'2009-02-01') end eller kan man skrive det nemmere?
12. februar 2009 - 08:18
#6
Lige præsis. Hvis du vil have den til at tælle hele måneder, skal du lave det tjek på dagen, som du selv har fundet frem der...
12. februar 2009 - 08:27
#7
smid et svar, som tak for konstateringen af at den kun regner på måneder.
12. februar 2009 - 09:02
#8
.o) <-- One Eyed Jack
12. februar 2009 - 09:04
#9
Der er desuden samme "problem" med yyyy. Der tæller den kun på året.
Computerworld tilbyder specialiserede kurser i database-management