Avatar billede inkognito1 Nybegynder
24. februar 2002 - 18:33 Der er 24 kommentarer og
2 løsninger

Select udfra DATO !

Jeg har et VBS script der skal hente info i database udfra dato. Den skal hente alt der er ældre end tiden lige nu.
---
sql = "SELECT * FROM SENDER WHERE status = 0 AND sendt >= Now "
---
Jeg bruger Now fordi både dato og tid skal med.

en der kan hjælpe med at rette den :)
Avatar billede jesperthomsen Nybegynder
24. februar 2002 - 19:39 #1
Tja, for det første skal du nok have vendt >= til <=; ellers får du det der er nyere end now. For det andet skal du være sikker på at din database har funktionen Now - det er jo en VB ting. Hvis du for eksempel kører mod Oracle skal du bruge Sysdate i stedet. Alternativt kan du gøre sådan her:
sql = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= '" & Now & "'"

Det kan give dig formatteringsproblemer, men så er du nødt til at finde ud af i hvilket format datoer er gemt på din server.
Avatar billede joeblack Nybegynder
25. februar 2002 - 22:25 #2
Now er helt fin at bruge.
Her er svaret:

SQL = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= '" & Now() & "'"

jesperthomsen manglede ()
OK ??
Avatar billede jesperthomsen Nybegynder
25. februar 2002 - 22:39 #3
Nu er det scripting og jeg er mere kendt i VB(A) så () er måske nødvendig. Der er dog stadig et problem med formatteringen. Hvis databaseserveren forventer formatet mm-dd-yyyy så får man noget vrøvl ud af det. En Oracle eller Informix-server kunne sagtens forvente noget i den retning. Hvis der eksempelvis er tale om en Oracle vil det være snedigere at skrive:
sql = "SELECT * FROM SENDER WHERE status = 0 AND sendt >= Sysdate " - så er man ude over formatteringsproblemet.

Alternativt kan det blive nødvendigt at pakke Now() ind i en format$:
sql = "SELECT * FROM SENDER WHERE status = 0 AND sendt >= '" format$(now(),"mm-dd-yyyy hh:mm:ss") & "'"
Avatar billede inkognito1 Nybegynder
25. februar 2002 - 23:31 #4
Synes ikke jeg kan få det til at virke .. skal feltet [sendt] være noget specielt i min SQL database. Bruger MS-SQL 2000
Avatar billede jesperthomsen Nybegynder
25. februar 2002 - 23:43 #5
Det skal være en dato. Jeg har ikke arbejdet så meget op mod MS SQL men jeg kan forestille mig at du måske ikke skal bruge ' omkring datoer. Har du prøvet at fjerne dem?
Avatar billede joeblack Nybegynder
26. februar 2002 - 08:37 #6
Sorry...
Jeg gik ud fra, at det var en Access DB. Så ville det virke.

Men det forudsætter:
- At feltet [sendt] er dato&klokkeslet
- At feltet [status] er tal (ellers skal status = 0 være status ='0')
Avatar billede jesperthomsen Nybegynder
26. februar 2002 - 08:45 #7
Joeblack -> på en Access skulle du bruge # til at kvalificere datoerne.

inkognito1: Hvis du ikke har fået det til at spille i eftermiddag installerer jeg lige MS SQL på min egen og laver et eksempel.
Avatar billede joeblack Nybegynder
26. februar 2002 - 08:48 #8
jesperthomsen->

Nej, ikke hvis man bruger now(). Kun hvis specifikke datoer anvendes, f.eks #01/01/2002#.
Jeg vil næsten tro, at det bør virke. Jeg tror, at han har lidt problemer med feltformatet.
Avatar billede jesperthomsen Nybegynder
26. februar 2002 - 08:51 #9
joeblack -> Du har ret - med now i selve sql'en er det ikke nødvendigt. Kun ved eksempelvis
SQL = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= '" & Now() & "'"

Det skulle i stedet være
SQL = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= #" & Now() & "#"
på Access (jeg kan forstå at du udmærket vidste det i forvejen; jeg er ikke ude på at virke nedladende men det kan muligvis være en nyttig oplysning for inkognito1)
Avatar billede joeblack Nybegynder
26. februar 2002 - 08:55 #10
Nej, det tror jeg ikke ville virke. Husk, at i now() returneres både dato & klokkeslet. Ikke som i date(). Jeg mener stadig, at

SQL = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= '" & Now() & "'"

virker, hvis eller inkognito1 har check på feltformaterne i basen.
Avatar billede jesperthomsen Nybegynder
26. februar 2002 - 08:58 #11
Hvis man laver en sql i hånden i Access og søger på en dato, med eller uden klokkeslet, så skal datoen i #. Eller rettere, Access emsige motor sætter selv # omkring. Det er muligt det kører uden. Men med ' vil man rende i problemer. Altså, igen på Access. På Oracle skal der være '.
Avatar billede joeblack Nybegynder
26. februar 2002 - 09:03 #12
Nu checker jeg lige min egen kode.....
Ingen plinger....!
SQL = "SELECT * FROM SENDER WHERE status = 0 AND sendt <= " & Now()

Gud ved, om Inkognito1 følger med.....
Avatar billede jesperthomsen Nybegynder
26. februar 2002 - 09:06 #13
Hehe - det gør han sikkert ikke.

Jeg henviste til dit første svar. Der har du nemlig plinger med - det havde jeg osse, men jeg gik ud fra Oracle. De blev i øvrigt kald gnyffer da jeg gik i skole ;).

Uden # vil mit bud være at enten odbc, ado eller jet indsætter dem når den opdager datoer. Jeg vil vædde en krone på at der er # et eller andet sted undervejs hvis du tracer.
Avatar billede joeblack Nybegynder
26. februar 2002 - 09:18 #14
Vi må se, om noget af det virker...
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 14:41 #15
Jeg følger med ... og vil prøve at rette felt nvan.
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 15:12 #16
dato&klokkeslet hvad hedder det felt i SQL ??

der et der hedder datetime men det er kun 8 ciffer
Avatar billede jesperthomsen Nybegynder
26. februar 2002 - 15:15 #17
Den er god nok. Den er nu nok nærmere 8 bytes end 8 cifre og det er et spørgsmål om hvordan den er gemt i databasen, ikke så meget hvor mange tegn den optager når du skriver en dato med tid.
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 15:20 #18
ok
Avatar billede joeblack Nybegynder
26. februar 2002 - 15:21 #19
Det er datetime du skal bruge.

Så bør NOW() virke.
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 15:22 #20
Hvordan når jeg sætter noget ind er det så

eksempelvis

21-02-2002 14:50:00

eller hvordan fungerer det ???


Det jo meningen jeg skal bruge det som en tidsindstillet funktion.

Den tjekker i forvejen en gang i minuttet. Og hvis dato og tidspunkt er passeret så skal den udføre kommando.
Avatar billede joeblack Nybegynder
26. februar 2002 - 15:26 #21
hvsi du laver en INSERT ....values (NOW())
så registeres feks.
19.10.2000 14:53:43
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 15:37 #22
jo men hvis klokken er 21.02.2002 12:10:00 og jeg vil uføre kommando 21.02.2002 12:50:00

kan jeg så bare indsætte det istdet i feltet .. kan den håndtere det som date/time ???
Avatar billede joeblack Nybegynder
26. februar 2002 - 15:41 #23
Nej, det tror jeg desværre ikke.

Måske var det en ide at få lukket dette spm og oprette et nyt om det....
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 15:43 #24
det da noget fis og skrive det ... det relatere da spørgsmålet .. ellers kan jeg ligesom ikke bruge svaret til noget ..
Avatar billede joeblack Nybegynder
26. februar 2002 - 15:46 #25
Helt ærligt. Dit spm (til 15...point) var:
Jeg har et VBS script der skal hente info i database udfra dato. Den skal hente alt der er ældre end tiden lige nu.
Og nu vil du begynde at udføre kommandoer...

men hvis klokken er 21.02.2002 12:10:00 og jeg vil uføre kommando 21.02.2002 12:50:00

Det ligner et helt andet spm hvis du spørger mig....
Avatar billede inkognito1 Nybegynder
26. februar 2002 - 17:51 #26
ok .. fair nok ... ret skal ske fylest :)
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

IT-JOB

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Everllence

Data Engineer

Netcompany A/S

IT Consultant

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Cyberdivisionen søger IT-supporterelever til Lokal IT på Aalborg Kaserne