Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jag har en column i min medlemsdatabas som heter "dMemberBirthDate" där det finns födelsedatum inlagda i formatet 1982-08-23.
Skulle vilja göra så att man kan jämföra åldrar så att jag kan skriva WHERE Age <= 15 AND Age >= 25.
Går det att med SQL göra så att datumet omvandlas till året + att det inte blir problem med när man fyller år på året..?
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
@ndersMedlem sedan juni 200026 914 inlägg
Nja, jag vet inte om du kan göra så i SQL, jag hade nog gett mig på att skapa datum till SQL-frågan, och kört en BETWEEN.
Förresten känns WHERE Age <= 15 AND Age >= 25 som ett villkor som kan vara svårt att uppfylla. ;)
Mvh,
------------------
All your base are belong to me.
LarsGMedlem sedan dec. 200012 465 inlägg
select * from ogrish
where cast(datediff(day,dMemberBirthDate,current_timestamp)/365.24 as int) between 15 and 25
borde gå i sql-server.
Har du någon annan DBMS så går det nog att anpassa uttrycket.
------------------
essentitia preter non sans multiplicandum
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jaja @nders, du är inte heller perfekt. Glömma FROM... Hmpf! :p
Tack LarsG, ska prova det! :)
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Varför kan man inte skriva så här?
SELECT *, CAST(DATEDIFF(DAY, dMemberBirthDate, CURRENT_TIMESTAMP)/365.24 AS INT) AS iMemberAge FROM tblMember WHERE iMemberAge BETWEEN 18 AND 20
Måste man skriva så här?
SELECT *, CAST(DATEDIFF(DAY, dMemberBirthDate, CURRENT_TIMESTAMP)/365.24 AS INT) AS iMemberAge FROM tblMember WHERE CAST(DATEDIFF(DAY, dMemberBirthDate, CURRENT_TIMESTAMP)/365.24 AS INT) BETWEEN 18 AND 20
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
LarsGMedlem sedan dec. 200012 465 inlägg
Du kan skriva så här
select * from (
SELECT *, CAST(DATEDIFF(DAY, dMemberBirthDate, CURRENT_TIMESTAMP)/365.24 AS INT) AS iMemberAge FROM tblMember )
where iMemberAge between 15 and 25
------------------
essentitia preter non sans multiplicandum
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Jag får felet:
Server: Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'where'.
Ser lite mystik ut den där SQL:en...
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
LarsGMedlem sedan dec. 200012 465 inlägg
Det är inget skumt med den resultatet av en select är ju en tabell.
Om du lägger på ett tabellalias då
select * from (
SELECT *, CAST(DATEDIFF(DAY, dMemberBirthDate, CURRENT_TIMESTAMP)/365.24 AS INT) AS iMemberAge FROM tblMember ) as t
where iMemberAge between 15 and 25
------------------
essentitia preter non sans multiplicandum
Erik JuhlinMedlem sedan maj 20007 625 inlägg
Funkar bra, tack LarsG! :)
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/