Avatar billede thb Nybegynder
02. november 2003 - 16:55 Der er 27 kommentarer og
1 løsning

Begrænsning af datoer

Hey alle

Jeg har en masse datoer i en tabel..

Jeg vil gerne have trukket alle datoer ud som er inde for den uge man er i på gældende tidspunkt..

Jeg har prøvet på forskellige måde men kan ikke få sql til at virke...

Kan I hjælpe ??? :)

Thoams
Avatar billede nmh Nybegynder
02. november 2003 - 17:47 #1
På følgende link er der et VBscript, som beregner ugenummeret ud fra en dato.
Du kan jo så udregne ugenummeret for alle dine datoer, og så pille dem ud, hvor ugenummeret svarer til dagens dato.

http://www.beisland.net/usefulpages/scripts.html
Avatar billede thb Nybegynder
02. november 2003 - 19:51 #2
Kan man ikke på en måde sige... altså i sql, at den skal tage alle datoer mellem f.eks. 20-10-2003 og 26-10-03 ???

Det andet tror jeg ikke at jeg vil bruge..

Thomas
Avatar billede mm12010 Nybegynder
02. november 2003 - 21:01 #3
Avatar billede Slettet bruger
02. november 2003 - 21:04 #4
Select * from tabel where dato > '2003-10-20' and dato < '2003-10-26'
Det er ikke altid at between virker ordentlig med datoer så jeg foretrækker ovenstående.
Avatar billede thb Nybegynder
02. november 2003 - 21:13 #5
nu har jeg skrevet sådan her..

SQL = "Select * from kampe where dato >= " & dateserial(year(date()),month(date()),day(date()))-tilbage & " and dato <= " & dateserial(year(date()),month(date()),day(date()))+frem & ""

og der kommer stadigvæk ikke noget...
tilbage og frem er 2 variabler med det antal af dage man skal frem/tilbage for at kommer til ugens start/slut

Thomas
Avatar billede Slettet bruger
02. november 2003 - 21:16 #6
Prøv dateadd istedet:
Tilbage skal så være et negativt tal

SQL = "Select * from kampe where dato >= " & dateadd("d",tilbage,date()) & " and dato <= " & dateadd("d",frem,date())
Avatar billede thb Nybegynder
02. november 2003 - 21:28 #7
Det hjælper ikke..
Avatar billede Slettet bruger
02. november 2003 - 21:31 #8
Er det Access:
SQL = "Select * from kampe where dato >= #" & dateadd("d",tilbage,date()) & "# and dato <= #" & dateadd("d",frem,date()) & "#"
Avatar billede Slettet bruger
02. november 2003 - 21:31 #9
Ellers:
SQL = "Select * from kampe where dato >= '" & dateadd("d",tilbage,date()) & "' and dato <= '" & dateadd("d",frem,date()) & "'"
Avatar billede thb Nybegynder
02. november 2003 - 21:35 #10
super fedt, nu virker det... :)

Thomas
Avatar billede Slettet bruger
02. november 2003 - 21:36 #11
Godt og tak for point :-)
Avatar billede thb Nybegynder
02. november 2003 - 22:53 #12
jeg forstår det ikke.. Nu har jeg ændret lidt og så sker dette..

Select * from kampe where dato >= #10-11-2003# and dato <= #16-11-2003# order by dato asc,start ASC

12-10-2003
12-10-2003
15-10-2003
18-10-2003
18-10-2003
18-10-2003
18-10-2003
18-10-2003
19-10-2003
19-10-2003
19-10-2003
25-10-2003
25-10-2003
26-10-2003
26-10-2003
08-11-2003
09-11-2003
09-11-2003
15-11-2003
15-11-2003
16-11-2003
16-11-2003


Den udskrift passer jo overhovedet ikke..
Avatar billede Slettet bruger
03. november 2003 - 20:10 #13
Jo det gør den faktisk, datoer læses nemlig som mm-dd-yyyy som hovedregel og 10-11-2003 opfattes som den 11. oktober og ikke den 10. november, den 16-11-2003 kan ikke misforståes så derfor opfattes den korrekt, prøv evt at skrive dem bagvendt:

Select * from kampe where dato >= #2003-11-10# and dato <= #2003-11-16# order by dato asc,start ASC

Så er der ikke noget at tage fejl af :-)
Avatar billede thb Nybegynder
03. november 2003 - 20:52 #14
Jeg har sat det med ind med dateserial, den skulle jo lave dem rigtige.. Eller hva.. ??

Thomas
Avatar billede Slettet bruger
03. november 2003 - 21:06 #15
Jeg har aldrig brugt den så jeg ved ikke hvor afhængig den er af dato indstillingerne på maskinen. Men hvorfor bruger du ikke bare dateadd som jeg viste dig?
Avatar billede thb Nybegynder
03. november 2003 - 21:29 #16
den har jeg også brugt...

dateadd("d",-tilbage,dateserial(year(dato),month(dato),day(dato)))

thomas
Avatar billede Slettet bruger
03. november 2003 - 22:03 #17
Hvad med:
dateadd("d",-tilbage,cdate(dato))
Avatar billede thb Nybegynder
03. november 2003 - 22:58 #18
Det giver det samme...

Thomas
Avatar billede Slettet bruger
04. november 2003 - 19:28 #19
Er dato en variabel eller et felt i databasen?
Avatar billede thb Nybegynder
04. november 2003 - 20:25 #20
Det er en variabel... Som er fra querystring hvis den er tom er det date()'

Thomas
Avatar billede Slettet bruger
04. november 2003 - 20:37 #21
Hvis den er date(), så kan du nøjes med:
dateadd("d",-tilbage,dato) ellers så vil jeg gerne vide hvordan den står, altså er det dd-mm-yyyy eller ?
Avatar billede thb Nybegynder
04. november 2003 - 23:56 #22
querystringen kan se sådan her ud.. fil.asp?mode=next&dato=10-11-2003
Avatar billede Slettet bruger
05. november 2003 - 22:04 #23
Og det er den 10. november?
Hvis du på din side lige laver en
Response.Write date()
hvad får du så ud? Og hvad hvis du laver en
Response.Write CDate(dato)
Avatar billede thb Nybegynder
05. november 2003 - 23:30 #24
de giver det samme.. i dette tilfælde 10-11-2003

Thomas
Avatar billede Slettet bruger
06. november 2003 - 17:32 #25
Og er det ikke det du skal have?
Avatar billede thb Nybegynder
06. november 2003 - 18:29 #26
Jo men sqlen giver stadigvæk et forkert output.. Så er det jo lidt lige meget hvad jeg får i diverse varabler..

Thomas
Avatar billede thb Nybegynder
06. november 2003 - 18:49 #27
Nå, nu har en af mine venner lige fixet det..

        SQL = "Select * from kampe where datediff('d',dateserial("&year(dt)&","&month(dt)&","&day(dt)&"),dato) >= 0 and datediff('d',dateserial("&year(df)&","&month(df)&","&day(df)&"),dato) <= 0 order by dato asc,start ASC"

Thomas
Avatar billede Slettet bruger
06. november 2003 - 19:09 #28
ok
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