Avatar billede hundevennen Nybegynder
29. februar 2008 - 11:57 Der er 24 kommentarer og
1 løsning

Datediff problemer

jeg forsøger med denne:
datediff(hour, datofra, getdate()) < 24

men den returnere ikke alle poster 24 timer tilbage - det var det jeg gerne ville???
Avatar billede w13 Novice
29. februar 2008 - 11:59 #1
Hvorfor getdate() og ikke bare now() ?
Avatar billede softspot Forsker
29. februar 2008 - 12:01 #2
SQL Server antager jeg...?

Du kan evt. prøve med

where datofra between dateadd(hour, -24, getdate()) and getdate()
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:03 #3
jeg ved ikke om now tager fra forespørgselstidspunktet og 24 timer baglæns?
jeg forsøger med Softspots
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:08 #4
med where datofra between dateadd(hour, -24, getdate()) and getdate()
får jeg kun records fra dags dato - altså fra kl. 0001 og til 1203
Avatar billede softspot Forsker
29. februar 2008 - 12:09 #5
Hmm... er du sikker på at der er data indenfor de sidste 12 timer af igår?
Avatar billede softspot Forsker
29. februar 2008 - 12:12 #6
Dateadd lægger bare det antal timer (når du bruger hour) til den dato du smider funktionen og between er en rimelig standard "range"-sammenligning, så den burde fungere. Jeg ville som sagt nok lige kigge en ekstra gang på mine data... :)
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:28 #7
Der er records fra kl. 0005 - og frem til 2350
Avatar billede softspot Forsker
29. februar 2008 - 12:34 #8
Har du en Query Analyzer, hvor du kan udføre SQL-scripts mod din database?

Så kan du evt. prøve at køre flg. og kontrollere om det er de rigtige datoer der kommer ud af det:

/* skulle gerne returnere datoen igår på nøjagtig samme tid som nu */
SELECT dateadd(hour, -24, getdate())

/* vælg data med en manuel indtastet dato */
/* det er muligvis nødvendigt at bytte dato og måned i de to datoer alt efter hvilket sprog der benyttes på serveren */
SELECT * FROM tabel WHERE datofra BETWEEN '2008-02-28 12:00:00' AND '2008-02-29 12:00:00'

Hvis den sidste giver de korrekte data, og den første giver den korrekte dato, så vil da mene at der er noget galt, hvis du ikke får de data du forventer...
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:41 #9
med queryanalyzer får jeg med dateadd en syntaxfejl near ')'
Avatar billede softspot Forsker
29. februar 2008 - 12:46 #10
Er det den enste sætning du har i dit queryvindue? Hvis ikke, har du så markeret hele sætningen og kun den sætning?

Jeg kan godt køre den første sætning for sig selv uden at få fejl. Hvad er det egentlig du forsøger? :)
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:46 #11
Nu har jeg prøvet den med between og der får jeg også kun record fra idag, - og der er altså records fra den 28 også - f.eks når jeg bare laver seléct * from så kommer alt og der er data fra en 27.
Avatar billede hundevennen Nybegynder
29. februar 2008 - 12:46 #12
jeg markere den sqlsætning jeg vil fyre af
Avatar billede softspot Forsker
29. februar 2008 - 13:51 #13
OK, så kan jeg ikke lige gennemskue hvad der skulle gå galt. datofra er vel et datofelt (ikke fordi jeg lige kan se hvad der skulle gå galt hvis det ikke var)?
Avatar billede hundevennen Nybegynder
10. marts 2008 - 17:53 #14
softspot - jeg har jo 2 datofelter - måske er det det er driller de hedder
datofra og datotil?
Avatar billede hundevennen Nybegynder
10. marts 2008 - 17:55 #15
så sqlsætningen skal være noget med at hente fra datofra kl. xxxx til datotil kl. xxxx og altså være indenfor 24 timer af datofra + tidspunkt
Avatar billede softspot Forsker
13. marts 2008 - 10:12 #16
Er datofra af typen datetime i databasen? Eller har du specificeret datofra (som en varchar) der indeholder datoen og nyt felt som hedder tidspunkt (af typen varchar) der indeholder tidspunktet...?
Avatar billede hundevennen Nybegynder
13. marts 2008 - 18:16 #17
datofra er datetime og tidspunkt er varchar
Avatar billede softspot Forsker
13. marts 2008 - 18:28 #18
Hvorfor er tidspunkt adskilt fra datofra og datotil? Et felt af typen datetime indeholder også tidspunkt... det lyder som en besværliggørelse af datahåndteringen at adskille dato og tid i to forskellige felter.
Avatar billede hundevennen Nybegynder
13. marts 2008 - 18:43 #19
Det er fordi datetime er en maskintid ik? og tidspunkt er det klokkeslet hvor teksten der også er en del af opdatering bliver modtaget, så datofra som datetime inklusiv tid kan ikke altid bruges
Avatar billede hundevennen Nybegynder
14. marts 2008 - 08:57 #20
men selvfølgelig kunne man vel godt sætte tiden med i datofeltet og så bare ved visning formattere dato til kun at vise dato og så ville man vel kunne gøre det jeg gerne vil, nemlig at hente alt fra en dato fra kl. 0001 til 2359 filtreret på datetime?
Avatar billede hundevennen Nybegynder
14. marts 2008 - 09:01 #21
så er det bare lige hvordan jeg får indsat datetime automatisk p.t. bruger jeg dette:
altså 2 indputfleter med en value="<%=(date)%>" for fradato og tildato
value="<%=(date)+1%>"?
Avatar billede softspot Forsker
26. marts 2008 - 08:53 #22
14/03-2008 08:57:55 >> ja, det skulle jeg da mene, for så er tidspunktet en del af datofra.

14/03-2008 09:01:51 >> Det kommer lidt an på hvad du mener med at få datetime indsat automatisk... hvor er det den skal indsættes?
Avatar billede hundevennen Nybegynder
26. marts 2008 - 13:45 #23
som du tidligere har sagt, - har jeg nu lavet datofeltet om, så det indeholder tiden også, - altså f.eks '2008-02-28 12:00:00', men jeg er ikke kommet så langt, at jeg igen har forsøgt med den sqlsætning du ga mig

where datofra between dateadd(hour, -24, getdate()) and getdate(), men jeg har løst det hele på en anden måde, da udtrækket af databasen nu kun skal indeholde fra en dato og ikke flere, men læg et svar og tak for hjælpen
Avatar billede softspot Forsker
03. april 2008 - 12:43 #24
OK, hvis det fungerer for dig, så fungerer det for mig :)

Velbekomme :)
Avatar billede softspot Forsker
07. april 2008 - 10:55 #25
Tak for point :)
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
Kurser inden for grundlæggende programmering

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