Hallå allihopa. Jag har suttit och kliat mig i huvudet hela dagen och få ordning på DATEDIFF i t-sql. Jag hittade kod som jag arbetat utifrån på nätet:
DECLARE @givendate datetime, @date datetime, @tmpdate datetime, @years int, @months int, @days int
SELECT @date = '1997-01-30'
SELECT @givendate = '2010-01-29'
SELECT @tmpdate = @date
SELECT @years = DATEDIFF(yy, @tmpdate, @givendate) - CASE WHEN MONTH(@date) > MONTH(@givendate) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(yy, @years, @tmpdate)
SELECT @months = DATEDIFF(m, @tmpdate, @givendate) - CASE WHEN DAY(@date) > DAY(@givendate) THEN 1 ELSE 0 END
SELECT @tmpdate = DATEADD(m, @months, @tmpdate)
SELECT @days = DATEDIFF(d, @tmpdate, @givendate)
SELECT @years as years, @months as months, @days as days
Om följande kod körs så får jag 13 år, -1 månad, 30 dagar. Vilket inte alls stämmer, snarare borde det vara 12 år, 12 månader, 30 dagar. Detta löser sig inte förrän jag går en månad till bakåt i tiden i "@givendate".
Ändrar jag däremot "@givendate" till 2010-01-31 så blir resultatet precis så jag vill ha det: 13 år, 0 månader, 1 dag.
Finns det någon vänlig själ som skulle kunna skjuta mig i rätt riktning?
//matlin