---
title: "BETWEEN på date-kolumner"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/56404-between-på-date-kolumner"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "sabbacus"
published: "2002-10-18T13:13:23.000Z"
updated: "2002-10-18T17:26:04.000Z"
replies: 8
views: 234
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/56404-between-på-date-kolumner"
---

# BETWEEN på date-kolumner

## #1 — sabbacus, 2002-10-18T13:13Z

Tjipp.
Jag sitter med en databas och försöker ta reda på om ett datum är inom ett visst intervall. Har bestämt mig för att göra detta med BETWEEN (hojta om det finns något bättre sätt).

Dock får jag feta "data type mismatch in criteria expression" när jag kör min fråga.

lite förklaringar:
"fom", "tom" är av typen date
Jag vill alltså ha ut (i detta exempel) antalet rader där datumet 2002-01-01 är senare än "fom" men tidigare än "tom"

query
SELECT count(1) FROM bokningar WHERE '2002-01-01' BETWEEN fom AND tom

Någon som vet hur jag  ska få det att fungera?
/Sabbacus

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

## #2 — @nders, 2002-10-18T13:18Z

Det borde fungera, men jag är osäker på två saker:
1) Jag vet inte vad Access tycker om COUNT(1). Prova COUNT(\*) istället.
2) Möjligen måste du använda brädgård för att omsluta datumet.

Prova denna: 

```
SELECT count(*) FROM bokningar WHERE #2002-01-01# BETWEEN fom AND tom
```

Mvh,

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

## #3 — sabbacus, 2002-10-18T13:55Z

SELECT count(\*) FROM bokningar WHERE #2002-01-01# BETWEEN fom AND tom

Nu funkar det jättebäst. Tackar!
Access klarar också av count(1). 
Men varför brädgårdar?

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

## #4 — @nders, 2002-10-18T13:58Z

Gamla versioner av Access (97 och tidigare) använder # för att omsluta datumvärden. Nyare tycker om apostrofer, men stödjer också # av bakåtkompatibilitetsskäl (phew, vilket ord. ;) ).

**Red:** Vad returnerar count(1)? Om du bara vill ha något, vad som helst tillbaka, så räcker det att bara fråga efter 1: SELECT 1 FROM ...

Mvh,

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

## #5 — sabbacus, 2002-10-18T14:27Z

Om jag nu minns rätt så returnerar count(1) antalet berörda rader i selectsatsen. Man kan om man vill köra count(id) om man har en tabell som heter så. count(1) är "universell" och kräver inte ett tabellnamn för att fungera.

Så tror jag att det är iaf. rätta mig om jag har fel. Har också en teori om att # inte är en del av SQL-specen utan att det är en MS-uppfinning. korrekt?

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

## #6 — sabbacus, 2002-10-18T14:32Z

Självklart ska det stå 
"Man kan om man vill köra count(id) om man har en KOLUMN som heter så."
och inget annat.
/S

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

## #7 — LarsG, 2002-10-18T14:50Z

count(1) skall vara samma som count(\*) enligt sqlstandard. 

count(id) innebär att man inte räknar de poster där id är null.

Varken

\#yyyy-mm-dd# eller
'yyyy-mm-dd' 

för datum är enligt sql-standard.

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

## #8 — @nders, 2002-10-18T17:11Z

> **LarsG skrev:**
>
> Varken
> 
> \#yyyy-mm-dd# eller
> 'yyyy-mm-dd' 
> 
> för datum är enligt sql-standard.

Och B? :)

Mvh,

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

## #9 — LarsG, 2002-10-18T17:26Z

Okej då.

date '2002-10-22'

så skall ett datum se ut. Standarden har olika datatyper för date/time/timestamp där timestamp motsvarar det som de flesta dbms kallar för date eller datetime.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/56404-between-på-date-kolumner
