Avatar billede pfp Nybegynder
13. januar 2006 - 17:25 Der er 4 kommentarer og
1 løsning

Extracte dato fra datetime

Hej,

Jeg har en Stored Procedure, som tager 2 datetime som inputvariabler (start og slut).

Herefter skal den gerne tælle antal ordrer og gruppere dem efter dage.

SELECT COUNT(OrderId) AS OrderCount, DateCreated
FROM Orders
WHERE ShopId = @ShopId
AND DateCreated BETWEEN @Start AND @End
GROUP BY DateCreated

Mit problem er at [DateCreated] godt kan være eks. "01-02-2006 12:00:00" eller "01-02-2006 13:00:00"

Og når jeg så anvender GROUP BY på [DateCreated] tolker den jo ikke de to datoer som ens, og jeg får derfor et record for hver unikt tidspunkt.

Så mit egentige spørgsmål er hvordan jeg kan extracte datoen fra et DateTime felt i databasen?

Jeg anvender SQL2000.

/pfp
Avatar billede arne_v Ekspert
13. januar 2006 - 18:26 #1
SELECT COUNT(OrderId) AS OrderCount, YEAR(DateCreated), MONTH(DateCreated),DAY(DateCreated)
FROM Orders
WHERE ShopId = @ShopId
AND DateCreated BETWEEN @Start AND @End
GROUP BY YEAR(DateCreated), MONTH(DateCreated),DAY(DateCreated)

måske
Avatar billede pfp Nybegynder
13. januar 2006 - 19:13 #2
Ja det virker for så vidt. Nu får jeg jo så mine datoer ud, delt op i 3 felter. Det er jo ikke nogen videre elegant løsning, men jeg kan selvfølgelig konstruere en "ægte" dato ud fra de 3 værdier, når jeg returnerer til C#
Avatar billede arne_v Ekspert
13. januar 2006 - 19:17 #3
alternativ

SELECT COUNT(OrderId) AS OrderCount, CONVERT(VARCHAR(10), DateCreated, 103)
FROM Orders
WHERE ShopId = @ShopId
AND DateCreated BETWEEN @Start AND @End
GROUP BY CONVERT(VARCHAR(10), DateCreated, 103)
Avatar billede pfp Nybegynder
13. januar 2006 - 19:22 #4
Angiver de 103 konvertering til dato?

Løsningen er fin nok, smider du et svar?

Det undrer mig bare at man ikke har mulighed for at hive f.eks. dato eller tidspunkt ud med DatePart
Avatar billede arne_v Ekspert
13. januar 2006 - 19:25 #5
103 er dd/mm/yyyy

tror jeg nok

ellers check docs

og svar

MSSQL har ikke DATE data typen med kun dato delen

DATEPART er små enkelt dele (den kunne også have været brugt)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester