24. februar 2002 - 18:33Der 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.
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.
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") & "'"
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?
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.
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)
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 '.
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.
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.
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....
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.