---
title: "Hjälp med konvertering för datumurvalet"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/84618-hjälp-med-konvertering-för-datumurvalet"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "wazid"
published: "2003-08-27T19:45:50.000Z"
updated: "2003-08-28T04:36:56.000Z"
replies: 4
views: 223
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/84618-hjälp-med-konvertering-för-datumurvalet"
---

# Hjälp med konvertering för datumurvalet

## #1 — wazid, 2003-08-27T19:45Z

Hejsan

Jag har sutit och letat i forumet, och kommit en bit på väg i min select-sats.
Dock får jag inte kläm på det sista, som handlar om ett urval med konvertering.

Jag önskar lista ut en topplista från en tabbel.
Jag vill få ut de 30 mest förekommande datumen, och en summering per per dag för dessa.
Detta fixade jag.
Men jag vill även kunna lägga in ett urval för mellan vilka datum som sökningen ska ske.

Så här ser den fungerande koden ut utan detta urval :

```
SELECT     TOP 30 CAST(Datum AS varchar(11)) AS Dag, COUNT(*) AS visningar
FROM         Visastatistik
GROUP BY CAST(Datum AS varchar(11))
ORDER BY COUNT(*) DESC
```

Men så fort jag blandar in Where Datum between xxxx-xx-xx AND yyyy-yy-yy så får jag felmeddelande.
Kolumnen Datum är av typen Smalldatetime.
Databasen är SQL 2000.

MvH

Daivd

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

## #2 — @nders, 2003-08-27T19:50Z

Vad får du för felmeddelande? Det ska gå alldeles utmärkt att begränsa urvalet. Hur ser frågan ut när du har med between?

(Du borde heller inte casta till varchar, det finns många olika datumformat du kan konvertera till i SQL-frågan, men det är en bisak i sammanhanget.)

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

## #3 — wazid, 2003-08-27T20:24Z

Hej @nders

Om jag tex kör så här :

```
SELECT     TOP 30 CAST(Datum AS varchar(11)) AS Dag, COUNT(*) AS visningar
FROM         Visastatistik
WHERE     (Datum BETWEEN 2003 - 05 - 01 AND 2003 - 07 - 01)
GROUP BY CAST(Datum AS varchar(11))
ORDER BY COUNT(*) DESC
```

Så får jag inget felmeddande, men jag får inte ut några värden heller. Resultatet blir tomt...
Jag tar gärna emot tips på alternativ till Cast.

MvH

David

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

## #4 — aasah, 2003-08-27T20:45Z

Om Datum är en VARCHAR, så är det alltså ett textformat. Funkar between verkligen på text? :q

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

## #5 — @nders, 2003-08-28T04:36Z

Så där kan du inte skriva datum. Datum skall ha apostrofer runt sig.

```
WHERE     (Datum BETWEEN '2003-05- 01' AND '2003-07-01')
GROUP BY CAST(Datum AS varchar(11))
```

Det du hade skrivit var

```
WHERE     (Datum BETWEEN 1997 AND 1995)
GROUP BY CAST(Datum AS varchar(11))
```

, och det är ju inte det du ville?

Mvh

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/84618-hjälp-med-konvertering-för-datumurvalet
