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,
8 svar · 206 visningar · startad av Erik Juhlin
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..?
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,
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.
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
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
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...
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
Funkar bra, tack LarsG! :)