SELECT stallID, namn, fodd, CAST(DateDiff(now(),fodd)/365.25 AS SIGNED INTEGER) as 'Riktig ålder', CAST(DateDiff(now(),concat(EXTRACT(YEAR FROM fodd),'-01-01'))/365.25 AS SIGNED INTEGER) as Travhästålder
Kanske går att lösa smidigare
Databaser & SQLur Databashanterare & SQL
4 svar · 684 visningar · startad av tanten
Tycks aldrig få in detta med år i skallen och får inte till hur jag ska göra med att räkna ut åldern på hästarna.
SELECT stallID, namn, fodd
är grunden till frågan, där fodd innehåller t.ex. 2001-04-12.
Men när det gäller travhästar så räknas åren från 1:a januari även om de fötts i juli.
Borde jag kanske ha en rad för tävlingsålder i tabellen, eller finns svaret i php...
Eller kan man på något sett räkna ut och få ut bägge åldrarna direkt i selecten
använder MySQL5
SELECT stallID, namn, fodd, CAST(DateDiff(now(),fodd)/365.25 AS SIGNED INTEGER) as 'Riktig ålder', CAST(DateDiff(now(),concat(EXTRACT(YEAR FROM fodd),'-01-01'))/365.25 AS SIGNED INTEGER) as Travhästålder
Kanske går att lösa smidigare
Det fungerade väldans bra... Tack så mycket! Sedan gäller det bara för mig att förstå också...
Du har ett as för mycket i koden om någon skulle vilja använda den till något...
Tack igen :-)
Bra, jag dubblade ett "as"!
CAST(34.4531 AS SIGNED INTEGER) konverterar ett decimaltal till ett heltal. (Det brukar räcka att säga att man är 34 år och inte 34,4531 år... ;) )
DATEDIFF(now(),fodd) / 365.25 Räknar ut skillnaden i dagar ifrån födelsedatumet och "nu" och delar det hela med årets alla dagar(+skottår)
CONCAT(fodd,'-01-01',' är', ' den', ' första', ' januari.') Slår bara ihop två eller fler värden
EXTRACT(YEAR FROM '2005-05-24') Drar ut året ifrån ett datumvärde
Nu vet jag inte vad som hänt, för plötsligt så blir alla hästar utom två ett år för gamla. Kan inte heller se något mönster i varför två får rätt ålder. Vad kan ha hänt?