Avatar billede tma Juniormester
27. marts 2015 - 13:58 Der er 14 kommentarer og
1 løsning

Antal poster på en given dato

Jeg har et log-system, hvor der registreres dato og tid i ét felt. Datatypen er et Datetime.
Indhold i feltet kan se sådan ud: 2015-03-27 13:49:00.000
Jeg vil gerne have en forespørgsel som fortæller mig hvor mange poster der er oprettet den 2015-03-27, 2015-03-26 osv.
Jeg har selvfølgelig forsøgt med noget Count(*), men antager der skal noget group blandes ind i det, hvor man får fjernet klokkeslæt. Kan bare ikke lige skrue det korrekt sammen :-)

/Torben
Avatar billede showsource Seniormester
27. marts 2015 - 18:12 #1
Kender ikke MS SQL, bruger MySql, men syntaks er vist det samme ?

SELECT DATE_FORMAT(datofelt, '%Y-%m-%d') as dato,
COUNT(*) as ialt
FROM tabel
WHERE datofelt BETWEEN 'DinStartDato' AND 'DinSlutSato'
GROUP BY dato

Totalt utestet !
Avatar billede showsource Seniormester
27. marts 2015 - 18:13 #2
men syntaks lige her, er vist det samme
Avatar billede Slettet bruger
27. marts 2015 - 19:59 #3
Du kan bruge denne til dato

cast(datofelt As Date)
Avatar billede showsource Seniormester
28. marts 2015 - 05:28 #4
rahp -> Den kendte jeg ikke lige ! :O)

Denne er testet: (mysql DB)

SELECT CAST(dato AS DATE) as dag,
COUNT(*) as ialt
FROM tabel
WHERE dato BETWEEN '2015-03-01' AND '2015-03-31'
GROUP BY dag
Avatar billede tma Juniormester
28. maj 2015 - 09:17 #5
Synes ikke jeg kan få noget af det til at virke. Jeg prøver lige at uddybe... Jeg kan lave det i en forespørgsel i en Access ADP-base, eller direkte på SQL, men får intet til at virke. Mine data ser således ud:
Bruger    Dato
tm    24-01-2008 14:17:00
tm    24-01-2008 14:27:00
jm    24-01-2008 14:29:00
tm    25-01-2008 09:30:00
Datofeltet har Datetime som datatype.

Jeg har blot brug for en forespørgsel som viser at tm havde 2 poster den 24-01-2008, jm havde 1 post den 24-01-2008, og tm havde 1 post den 25-01-2008
Avatar billede Slettet bruger
01. juni 2015 - 12:40 #6
SELECT count([Bruger])
,Bruger
      ,cast([Dato] as date)
  FROM [Testdata].[dbo].[testbruger]

  group by cast(Dato as date),Bruger

sådan der?
Avatar billede tma Juniormester
02. juni 2015 - 14:03 #7
Jeg får fejlen:

"Type date is not a defined system type"

Hvis jeg ændrer til datetime, kan den afvikles,  men så grupperes de jo pr. minut...
Avatar billede Slettet bruger
02. juni 2015 - 14:14 #8
Det forstår jeg ikke?

Hvad datatype er din dato? Og arbejder du på en SQL server? Og hvilken version?

Hvis din dato er en datetime kan den konverteres til en date.
Avatar billede Slettet bruger
02. juni 2015 - 14:22 #9
Alternativ kan du lave den grimme og konverter til datetime og så substring fra 1 til 8

sådan noget ala:


with datotemp as (
SELECT

Bruger
      ,cast(cast([Dato] as datetime) as varchar(50)) as dato
  FROM [Testdata].[dbo].[testbruger]

  )

  select count(bruger), Bruger,cast(substring(dato,1,11) as date) from datotemp

group by substring(dato,1,11),bruger
Avatar billede tma Juniormester
02. juni 2015 - 14:29 #10
Lige ovenover dit svar, angiver jeg datatype og at databasen kører på sql-server. Versionen er en sql 2005.
Jeg har forsøgt at foretage udtrækket via et Query-vindue på Sql-enterprise manager, og via en ADP-tilslutning (Access)
Avatar billede Slettet bruger
02. juni 2015 - 14:53 #11
Det virker fint her hvad med det andet eksempel jeg gav dig?
Avatar billede Slettet bruger
02. juni 2015 - 14:55 #12
Læste lige : Date eksisterer kun i 2008 og fremad. Du skal bruge datetime. Så gør evt. som jeg har vist dig i den anden sql. det burde virke.
Avatar billede Slettet bruger
02. juni 2015 - 14:58 #13
SELECT
count(bruger)
Bruger
      , convert(varchar, dato, 105) as dato
  FROM [Testdata].[dbo].[testbruger]

  group by bruger,convert(varchar, dato, 105)


her.
Avatar billede tma Juniormester
02. juni 2015 - 15:05 #14
Har fået den til at virke ved at bruge:
GROUP BY Bruger, SUBSTRING(CONVERT(varchar(19), Dato), 1, 11), YEAR(Dato), MONTH(Dato), DAY(Dato)

Dit svar matchede ikke 100%, men var nok til at lede mig på sporet :-)

tak.
Avatar billede Slettet bruger
02. juni 2015 - 15:23 #15
Det var godt - så lidt!

Har du testet om mit sidste forslag virkede? for det er lidt kønnere ikke at skulle substringe og mindre fejl risiko :)

Forsat god dag
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

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