Avatar billede ashansen Nybegynder
25. august 2005 - 22:20 Der er 22 kommentarer og
3 løsninger

DateTime? i sql

Hej igen

Jeg sidder med det problem, at jeg fra min database vil lave et udtræk der går nøjagtigt 24 - altså et døgn - tilbage.

Jeg havde forestillet mig noget med select * from tabel where datetime(datofelt i db) between '24' and '25'
hvor 24 og 25 er datoer.
Er der nogen der har et forslag?

Mvh

Allan
Avatar billede mugs Novice
25. august 2005 - 22:22 #1
I Access er et døgn = 1, så detr skal være dit datofelt -1
Avatar billede ashansen Nybegynder
25. august 2005 - 22:23 #2
ja men det holder ikke ned på timer og minutter
Avatar billede mugs Novice
25. august 2005 - 22:27 #3
Du spurgte også om 1 døgn tilbage, og den er her:

SELECT Dato.Dato1
FROM Dato
WHERE (((Dato.Dato1)=Date()-1));

Uanset om du taler om timer og minutter, vil et døgn fra idag D 25 AUG altid vise datoer fra D 24 AUG. Evt kan du se lidt på funktionen DatePart.
Avatar billede ashansen Nybegynder
25. august 2005 - 22:33 #4
dato.dato1, kan du pensle den lidt mere ud?
Avatar billede mugs Novice
25. august 2005 - 22:41 #5
SELECT TABELLEN DATO.FELTET DATO!
FROM TABELLEN DATO
WHERE (((TABELLEN DATO.FELTET DATO1)=Date()-1));
Avatar billede nih Novice
25. august 2005 - 22:54 #6
Hej Mugs - jeg tror din shift-tast har sat sig fast :)

Hvis der er klokkeslet med i dit dato felt (#24/8 2005 12:00:00#) er man nødt til at angive kriteriet mellem to datoer:
Between Date() And (Date()-1)

Det skriver du i kriteriet i din forespørgsel

Niels
Avatar billede nih Novice
25. august 2005 - 22:56 #7
Kriteriet der viser fra nu og 24 timer tilbage:
Between Now() And (Now()-1)
Avatar billede ashansen Nybegynder
25. august 2005 - 23:04 #8
det kan jeg ikke få til at virke, min sql ser således ud
select maaling.DateTime, Temp from maaling where (((maaling.datetime)=date()-1))
Avatar billede nih Novice
25. august 2005 - 23:09 #9
select maaling.DateTime, Temp from maaling where (((maaling.datetime)=Between Now() And (Now()-1)))
Avatar billede nih Novice
25. august 2005 - 23:10 #10
datetime er et lidt farligt feltnavn da det også er en felttype - vælg et andet feltnavn. evt datotid
Avatar billede ashansen Nybegynder
25. august 2005 - 23:16 #11
jo, det er gjort
nu får jeg fejl igen. Den siger mangler en operator i (((maaling.datetime)=Between Now() And (Now()-1)))
Avatar billede nih Novice
25. august 2005 - 23:16 #12
Mon ikke den skal se sådan ud:
select * from maaling where (((Temp)=Between Now() And (Now()-1)))
eller
select * from maaling where (((Temp)=Between Now() And (Now()-1)))
Avatar billede nih Novice
25. august 2005 - 23:18 #13
(((maaling.datetime)Between Now() And (Now()-1)))

Ingen "="
Avatar billede ashansen Nybegynder
25. august 2005 - 23:19 #14
nej, temp er et felt der indeholder en masse temperaturmålinger som også skal udlæses. SÅ det duer ikke rigtigt
Avatar billede kjulius Novice
25. august 2005 - 23:26 #15
Som nih skriver, skal der ikke være både = og Between. En af delene må være nok

WHERE DatoTid BETWEEN Now() and DateAdd("d", -1, Now())

(Jeg kan godt lide at bruge DateAdd funktionen, det gør det lidt lettere at gennemskue når man vender tilbage om et par år).
Avatar billede ashansen Nybegynder
25. august 2005 - 23:33 #16
DEt er virkelig super. Jeg vil meget gerne give jer alle tre point.

Har lige et sidste spørgsmål.
Hvis vi tager samme eksempel, men i stedet for at det er et døgn, så er det 1 time, hvilken funktion bruger man så o sql'en?
Avatar billede nih Novice
25. august 2005 - 23:34 #17
Ja jeg kan nu bedre li at tænke på datoer som kommatal f.eks udtræk af alle datoer igår uanset klokkeslet
Where int(DatoTid) = date()-1
Avatar billede nih Novice
25. august 2005 - 23:36 #18
between now() and (now() - (1/24))
Avatar billede nih Novice
25. august 2005 - 23:39 #19
copyright kjulius

WHERE DatoTid BETWEEN Now() and DateAdd("h", -1, Now())
Avatar billede ashansen Nybegynder
25. august 2005 - 23:41 #20
takker :)
nu bliver jeg så lidt nysgerrig, for hvis det så er på månedsbasis, altså den sidste måned, ganger man så, og i så fald med hvad?
Avatar billede nih Novice
25. august 2005 - 23:46 #21
datoer gemmes som kommatal startende med 0 d. 31/12 1899 kl 24:00

hver dag er 1
dvs hver time = 1/24
osv
vil du have en måned tilbage er det lidt svært:
now - 30:  er lige nu - 30 hele dage
date - 30:  er dagsdato (heltal) - 30 dage

skal du have udtræk for en bestemt måned skal du ind og bruge de indbyggede funktioner for måned month(dato) og year(dato)

Niels
Avatar billede ashansen Nybegynder
25. august 2005 - 23:48 #22
takker endnu engang, lad mig give jer point
Avatar billede nih Novice
25. august 2005 - 23:49 #23
tak
Avatar billede kjulius Novice
26. august 2005 - 00:13 #24
Hvis du insisterer, så okay da.. ;-)
Avatar billede mugs Novice
26. august 2005 - 08:04 #25
Shift vat vist ikke det eneste der havde sat sig fast :o)
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