Avatar billede kroger Nybegynder
09. marts 2004 - 18:51 Der er 11 kommentarer og
1 løsning

dato nyere end 3 dage i MSsql part 2

Jeg har i et tidligere spørgsmål spurgt hvordan man kan få mssql til at hente records der er nyere end 3 dage, men der blev ikke rigtig reageret, så jeg prøver igen. Det tidligere spm. kan findes her: http://www.eksperten.dk/spm/463631

Grundlæggende handler det om at jeg skal have vist et gif billede hvis der er records i tabellen der er nyere end 3 dage. Jeg har forsøgt at lege med datediff, og det er næsten lykkedes at få den til at gøre det rigtigt. Den er dog fuldstændig kold med min where klausul. Jeg bruger følgende kode:

strSQL_N = "SELECT dato FROM topic WHERE datediff(d, dato, " & Date() & ") < 3"
      SET rsdato = objConn.EXECUTE(strSQL_N)
      If not rsdato.eof Then %>
<img src="../mainimag/1.gif" width="9" height="9" border="0" alt=""><%=strSQL_N%>
<% End If %>

Hvis jeg udskriver sql strengen ser den således ud:
SELECT dato FROM topic WHERE datediff(d, dato, 09-03-2004) < 3

Håber i kan hjælpe.
Avatar billede nute Nybegynder
09. marts 2004 - 19:41 #1
Brug den indebyggede function 'GetDate()':

SELECT dato FROM topic WHERE datediff(d, dato, GetDate()) < 3

/nute
Avatar billede kroger Nybegynder
09. marts 2004 - 19:45 #2
Så får jeg følgende fejl:
Arithmetic overflow error converting expression to data type datetime.

Skal lige siges at feltet er af type VarChar. Ved ikke om det kan være årsagen
Avatar billede nute Nybegynder
09. marts 2004 - 19:52 #3
jow ... det er nok årsagen. hmm ... prøv denne:

SELECT dato FROM topic WHERE datediff(d, convert( datetime, dato ), GetDate()) < 3

det er jo lidt "mindre pænt" at have en varchar datatype på et datofelt hvis man har behov for at lave sammenligninger som dette ;o]

/nute
Avatar billede kroger Nybegynder
09. marts 2004 - 19:54 #4
Hehe, det ved jeg godt nu, men i min uvidenhed da jeg først designede databasen, vidste jeg ikke hvordan jeg ellers skulle få den til at vise det på den rigtigt måde. Men hvis det kunne lade sig gøre at få den til det med et varchar felt ville det være rart.

Den kommer stadig med samme fejl.
Avatar billede nute Nybegynder
09. marts 2004 - 20:00 #5
se om den kan klare denne:

SELECT CONVERT( datetime, dato ) FROM topic

kør SQL'en direkte i databasen ...

/nute
Avatar billede kroger Nybegynder
09. marts 2004 - 20:06 #6
hmmm, kommer stadig med samme fejl :(
Avatar billede nute Nybegynder
09. marts 2004 - 20:12 #7
så tror jeg det nemmeste for dig, er at lave dit datofelt om til 'datetime' i basen. Problemet ligger nok i at det er nogle værdier i feltet den ikke kan "tolke" ...
Avatar billede kroger Nybegynder
09. marts 2004 - 20:47 #8
Jeg prøvede at lave feltet om til et datetime felt, men fik nøjagtig den samme fejl. Det er da til at blive idiot af :(
Avatar billede kroger Nybegynder
09. marts 2004 - 20:58 #9
Prøvede for sjov skyld at oprette en kolonne i samme tabel med datetime type. Den bruger åbenbart som default samme format som mit varchar felt (dd-mm-yyyy), så det er dog besynderligt at den ikke kan finde ud af at konvertere det andet om......
Avatar billede nute Nybegynder
10. marts 2004 - 09:14 #10
du skal huske på at præsentationsformatet og det faktiske formatet i databasen, for et datetime felt, ikke altid stemmer overens ;-) det kan godt være at det står 'dd-mm-yyyy', men at det i basen faktisk ligger som noget andet.

/nute
Avatar billede kroger Nybegynder
25. marts 2004 - 22:41 #11
NHar desværre ikke haft tid til at rode med det før nu, men Nute jeg brugte din løsning (konverterede til datetime felt i db), og brugte sql strengen fra dit første indlæg. Smid et svar og du skal få nogle point.
Nåja og tusind tak for hjælpen
Avatar billede nute Nybegynder
26. marts 2004 - 07:38 #12
godt at høre :-)

"et svar"
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