Avatar billede hunter1978 Nybegynder
25. maj 2004 - 08:39 Der er 24 kommentarer og
1 løsning

Bruge datetime med forskellige parameter

Hej
Jeg har en tabel hvor jeg ønsker 3 forskellige forspørgsler, nogle på en bestemt dag, måned og år.
Hvordan ser SQL'en ud for det?
SELECT * from tabel where dato= år = 2004
SELECT * from tabel where dato= år = 2004 AND måned = 05 (maj)
SELECT * from tabel where dato= år = 2004 AND måned = 05 (maj) dag = mandag (ved ikke hvordan en uge tælles).
dato er som sagt af typen datetime.
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 08:48 #1
Nå ja, lige en ting mere.
Hvis jeg nu ønsker at tælle hvor mange forskellige dage der er i min tabel, hvordan gøres det? -Altså så hver dag kun tælles éngang.
Avatar billede jensen363 Forsker
25. maj 2004 - 09:23 #2
Hej Mads :
Pkt 1.
SELECT Format([dato],"yyyy") AS [Year]
FROM WMControlResults
WHERE (((Format([dato],"yyyy"))=2004));
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 09:26 #3
Hej Jens så er du på pletten igen :)
Med din forspørgelse for jeg kun 2004 ud, jeg ønsker at få alle atributerne ud, som er for 2004
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 09:27 #4
Er det ikke sådan her?
SELECT * FROM WMControlResults
WHERE (((Format([dato],"yyyy"))=2004));
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 09:28 #5
Hvordan ser det ud hvis jeg ønsker at tage måned og dag med som parameter?
f.eks 23/05/2004?
Avatar billede jensen363 Forsker
25. maj 2004 - 09:29 #6
Selvfølgelig ;) ... og sådan her, hvis du vil vælge måned også

SELECT WMControlResults.*, Format([dato],"yyyy") AS [Year], Format([dato],"mm") AS [Month]
FROM WMControlResults
WHERE (((Format([dato],"yyyy"))=2004) AND ((Format([dato],"mm"))=5));
Avatar billede jensen363 Forsker
25. maj 2004 - 09:33 #7
SELECT * FROM WMControlResults
WHERE (((Format([dato],"yyyy"))=2004)) AND (((Format([dato],"mm"))=5)) AND (((Format([dato],"dd"))=23));
Avatar billede jensen363 Forsker
25. maj 2004 - 09:37 #8
Mht. antal datoer i tabellen, kan den vist kun laves på baggrund af to forespørgsler, een hvor du grupperer datoer :

SELECT Format([dato],"dd/mm/yyyy") AS DatoGroup
FROM WMControlResults
GROUP BY Format([dato],"dd/mm/yyyy");

og een hvor du tæller på antal poster i den forespørgsel :

SELECT Count(qryGroupDato.DatoGroup) AS AntalOfDatoGroup
FROM qryGroupDato;
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 09:41 #9
Hej Jens kan man ikke gåre det i en forspørgelse?
Mener jeg har brygt denne her i mySQL
select DATE_FORMAT(date, '%Y-%m') as mindate
from millperformance
where millnumber = 10
GROUP BY mindate;
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 09:49 #10
Altså noget ligende det her:(det kan dog ikke køres)
SELECT Format([dato],"dd/mm/yyyy") AS DatoGroup
FROM WMControlResults
where Format([dato],"dd/mm/yyyy")= 18/05/2004;
GROUP BY DatoGroup;
Avatar billede jensen363 Forsker
25. maj 2004 - 09:55 #11
SELECT Format([dato],"dd/mm/yyyy") AS DatoGroup
FROM WMControlResults
WHERE (((Format([dato],"dd/mm/yyyy"))=#5/18/2004#))
GROUP BY Format([dato],"dd/mm/yyyy");
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 10:00 #12
Hej den kan godt køres. Men hvorfor for jeg ikke noget output, når jeg har data i basen fra den 18 maj 2004?
Avatar billede jensen363 Forsker
25. maj 2004 - 10:02 #13
Hej Mads.

Jeg skal lige til et møde, og vender tilbage senere ... men mon ikke problemet ligger i dato-formatet
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 10:07 #14
Jo, det kan godt være...
Lad os nu sige at jeg har data fra 2003.
Så ønsker jeg at få at vide hvor mange forskellige måneder jeg har data fra, så resultatet skulle gerne bliver 12 :)
Avatar billede terry Ekspert
25. maj 2004 - 12:07 #15
SELECT Count(Month([dato])) AS md
FROM tblDates
GROUP BY Year([Dato])
HAVING (((Year([Dato]))=2003));
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 12:13 #16
Men det giver da mere end tovl. Kan du ikke lave et eksempel hvor der bliver talt alle dage fra maj 2004? Der kan jo være mange data'ere fra en given dag, men den skal kun tælles éngang
Avatar billede terry Ekspert
25. maj 2004 - 12:24 #17
The example I gave counts the records in the year, do you want the number of UNIQUE months?
Avatar billede terry Ekspert
25. maj 2004 - 12:35 #18
This shows you the months which youhave and how many records are in each

SELECT Month([Dato]) AS md, Count(Month([Dato])) AS cntmd
FROM tblDates
GROUP BY Year([Dato]), Month([Dato])
HAVING (((Year([Dato]))=2003));
Avatar billede hunter1978 Nybegynder
25. maj 2004 - 12:41 #19
Ja som du selv er inde på så ønsker jeg unikke svar. f.eks antal månder eller dage inden for et givet tids parameter.
Avatar billede terry Ekspert
25. maj 2004 - 13:00 #20
SELECT count(*) as cnt
FROM (SELECT Month([Dato]) AS md, Year([Dato]) AS yr FROM tblDates
GROUP BY Month([Dato]), Year([Dato]) HAVING  Year([Dato]) = 2003 ) AS T;
Avatar billede terry Ekspert
25. maj 2004 - 18:07 #21
does this work?
Avatar billede jensen363 Forsker
26. maj 2004 - 10:04 #22
Jeg har eksperimenteret lidt med en UNION forespørgsel, og herfra lave nogle antal-udtræk via MessageBox:

SELECT 1 AS ID, Format([dato],"dd/mm/yyyy") AS Result
FROM WMControlResults
GROUP BY 1, Format([dato],"dd/mm/yyyy")
UNION
SELECT 2 AS ID, Format([dato],"mmm yyyy") AS Result
FROM WMControlResults
GROUP BY 2, Format([dato],"mmm yyyy")
UNION SELECT 3 AS ID, Format([dato],"yyyy") AS Result
FROM WMControlResults
GROUP BY 3, Format([dato],"yyyy");

MsgBox "Der er i alt : " & vbNewLine & DCount("*", "qryTælRegistreringer", "[ID] = 1") & " datoer registreret."

MsgBox "Der er i alt : " & vbNewLine & DCount("*", "qryTælRegistreringer", "[ID] = 2") & " måneder registreret."

MsgBox "Der er i alt : " & vbNewLine & DCount("*", "qryTælRegistreringer", "[ID] = 3") & " år registreret."
Avatar billede terry Ekspert
26. maj 2004 - 17:52 #23
hunter1978>Have you received the help you wanted?
Avatar billede terry Ekspert
01. juni 2004 - 18:08 #24
!
Avatar billede jensen363 Forsker
07. juni 2004 - 20:33 #25
???
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
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

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