Avatar billede mussle Nybegynder
15. januar 2001 - 10:04 Der er 18 kommentarer og
1 løsning

Problem tidsformat

Jeg har et problem når jeg vil bruge tid som søge parameter i sql...jeg bruger asp...

1 .forsøg
select * form dims where dato < ( now - ((1/(24*60)*20)

finder ikke noget

2.forsøg
select * form dims where dato < \"&dato&\" and tid <\"&tid&\"
dato er tilpasset US...12/31/99
tid er almindelig tid.. trukket 20 min fra

finder ikke noget

Linien skal bruges til en hit counter som kun tillader den samme ip et hit pr. 20 min..

Avatar billede been Nybegynder
15. januar 2001 - 10:47 #1
Nu ved jeg ikke om du har kopieret din sql-sætning ind her, men hvis du har har du så ikke stavet from som \"form\" ?
Avatar billede wisen Nybegynder
15. januar 2001 - 11:10 #2
Ja, det må skulle være \"from\" istedet for \"form\"...
Avatar billede wisen Nybegynder
15. januar 2001 - 11:12 #3
SELECT [prædikat] { * | tabel.* | [tabel.]felt1 [AS alias1] [, [tabel.]felt2 [AS alias2] [, ...]]}
    FROM tabeludtryk[, ...] [IN eksterndatabase]
    [WHERE... ]
    [GROUP BY... ]
    [HAVING... ]
    [ORDER BY... ]
Avatar billede mussle Nybegynder
15. januar 2001 - 12:01 #4
Jeg er udemærket klar over at der skal stå from og ikke form...har trods alt arbejdet med SQL i 1½ år..mit problem er tiden ikke selv sql linien...
Avatar billede doeleman Nybegynder
15. januar 2001 - 12:12 #5
>> select * form dims where dato < ( now - ((1/(24*60)*20)

Jeg mener der skal parenteser efter now(). Desuden bliver now() målt i sekunder, så du skal bare trække 20*60 fra, dvs.
SELECT * FROM dims WHERE data < (now()-20*60);
Avatar billede mussle Nybegynder
15. januar 2001 - 16:23 #6
now() - 20 * 60 = -3 år og lidt mere...
desuden kan jeg ikke lave en
where dato < now()
da datoen og tiden i databasen bliver gemt i formatet...yyyy-mm-dd hh:mm:ss
og now er i dd-mm-yyyy hh:mm:ss
prøver jeg at vende datoen i now og gemme denne i en anden varibel kan jeg ikke bruge det da det ikke er af typen dato...prøver jeg at caste det til det at dato typen vender det datoen til oprindelige...
Avatar billede doeleman Nybegynder
15. januar 2001 - 19:14 #7
Er du sikker? Har du prøvet?

Jeg har lige kørt følgende forespørgsel i min database, hvor feltet timestamp er en kolonne, der indeholder et timestamp.

SELECT timestamp, now(), now()-20*100 FROM dims

timestamp:    20010108135023
now():        2001-01-15 19:05:05
now()-20*100: 20010115188505

Som du kan se, kan du sagtens trække 20 min. fra now(), du skal blot trække 2000 fra.
Avatar billede mussle Nybegynder
15. januar 2001 - 19:23 #8
hvis jeg trækker 2000 fra now() får jeg
26-07-1995 19:28:56
Ikke specielt rat...
prøv response.write(now()-2000) og se så hvad den giver..
Avatar billede doeleman Nybegynder
15. januar 2001 - 19:30 #9
Hmmm, taler vi ikke SQL her?
Avatar billede mussle Nybegynder
15. januar 2001 - 19:30 #10
det sql-sætningen skal kunne er at en IP kun kan oprette et hit pr. 20 min..
Avatar billede doeleman Nybegynder
15. januar 2001 - 19:35 #11
response.write har ikke meget med SQL at gøre.

Prøv at skrive det i din SQL sætning. Jeg har netop prøvet ovenstående sql-sætning og det virkede (dog med PHP, men det gør jo ingen forskel).
Avatar billede mussle Nybegynder
15. januar 2001 - 19:40 #12
set rs = con.execute(\"select * from count where dato < (now() - (1/(24*60))*20) and ip like \'\"&ip&\"\'\")

Det er min SQL sætning...
now i asp er i formatet
dd-mm-yyyy hh:mm:ss
Avatar billede doeleman Nybegynder
15. januar 2001 - 19:51 #13
Hvis du kigger 6 poster over denne, har jeg skrevet at:
now():        2001-01-15 19:05:05
now()-20*100: 20010115188505

now() omregner automatisk til timestamp, når du trækker noget fra.

Prøv nu:
set rs = con.execute(\"select * from count where (data < (now()-20*100)) and (ip = \'&ip&\'\")
Avatar billede mussle Nybegynder
15. januar 2001 - 19:59 #14
set rs = con.execute(\"select * from count where (dato < (now()+20*100)) and (ip = \'\"&ip&\"\')\")

Prøv at forklar hvorfor denne så ikke virker
dato er timestamp
rs er eof
Avatar billede doeleman Nybegynder
15. januar 2001 - 20:13 #15
Hvis jeg har forstået dig ret, slår du op, om en ip er registereret inden for de sidste 20 min., ik?

set rs = con.execute(\"select * from count where (dato > now()-20*100) and (ip = \'\"&ip\"\')\")
Avatar billede mussle Nybegynder
15. januar 2001 - 20:23 #16
rettede lidt i det så..virkede det...syntes stadig at MySQL er skummelt ....men HURTIGT :-)
Thanz
Avatar billede mussle Nybegynder
15. januar 2001 - 20:56 #17
hvad med 2 mdr i stedet for 20 min...
2* 10^8 virker nemlig ikke ...
Avatar billede doeleman Nybegynder
15. januar 2001 - 21:10 #18
Avatar billede mussle Nybegynder
15. januar 2001 - 21:14 #19
det kan ikke bruges sammen med now() i asp...

set rs = con.execute(\"select * from count where (dato > now()-20*100) and (ip = \'\"&ip\"\')\")
 
virkede alligevel ikke....
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
Computerworld tilbyder specialiserede kurser i database-management

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