---
title: "Ålder"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/21727-ålder"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Erik Juhlin"
published: "2001-11-03T13:18:00.000Z"
updated: "2001-11-04T10:44:00.000Z"
replies: 8
views: 206
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/databaser-sql/21727-ålder"
---

# Ålder

## #1 — Erik Juhlin, 2001-11-03T13:18Z

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..?

Permalänk: https://www.webforum.nu/p/21727

## #2 — @nders, 2001-11-03T13:21Z

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,

Permalänk: https://www.webforum.nu/p/353019

## #3 — LarsG, 2001-11-03T13:33Z

```
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.

Permalänk: https://www.webforum.nu/p/353020

## #4 — Erik Juhlin, 2001-11-03T16:19Z

Jaja @nders, du är inte heller perfekt. Glömma FROM... Hmpf! :p

Tack LarsG, ska prova det! :)

Permalänk: https://www.webforum.nu/p/353021

## #5 — Erik Juhlin, 2001-11-03T16:24Z

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
```

Permalänk: https://www.webforum.nu/p/353022

## #6 — LarsG, 2001-11-03T19:35Z

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
```

Permalänk: https://www.webforum.nu/p/353023

## #7 — Erik Juhlin, 2001-11-03T21:08Z

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...

Permalänk: https://www.webforum.nu/p/353024

## #8 — LarsG, 2001-11-03T21:44Z

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
```

Permalänk: https://www.webforum.nu/p/353025

## #9 — Erik Juhlin, 2001-11-04T10:44Z

Funkar bra, tack LarsG! :)

Permalänk: https://www.webforum.nu/p/353026

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/21727-ålder
