Avatar billede danq Nybegynder
28. august 2003 - 23:01 Der er 12 kommentarer og
1 løsning

opsætning af korrekt sql streng

Det jeg vil er at udtrække samtlige poster(bruger-informationer) hvor personen er online. Til at tjekke om personen er online bruger jeg følgende: DateDiff("n", data("lastmove"), Now()) < 10
Hvordan kan jeg sætte min sql streng op så den kun hiver poster frem hvor datediff < 10? håber virkelig i kan hjælpe mig med denne for ellers er jeg på bar bund.
Avatar billede eagleeye Praktikant
28. august 2003 - 23:05 #1
Med Access sådan her, den skal hendte fra den tabel hvor du gemmer lastmove:

SQL = "SELECT * FROM tabelnavn WHERE datediff('n',lastmove,now()) < 10"
Avatar billede danq Nybegynder
28. august 2003 - 23:09 #2
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near '('n',lastmove,now()) < 10' at line 1
Dette er fejlen jeg får. Jeg benytter mig af en MySQL database og ikke en Access database.
Avatar billede eagleeye Praktikant
28. august 2003 - 23:14 #3
Så det er MySQL du bruger.

så prøv:

SQL = "SELECT * FROM tabelnavn WHERE DATEDIFF(MINUTE ,lastmove,now()) < 10"
Avatar billede danq Nybegynder
28. august 2003 - 23:16 #4
Microsoft OLE DB Provider for ODBC Drivers error '80040e09'

[TCX][MyODBC]You have an error in your SQL syntax near '(MINUTE ,lastmove,now()) < 10' at line 1
Avatar billede eagleeye Praktikant
28. august 2003 - 23:21 #5
hedder din kolonne ikke lastmove?
Avatar billede danq Nybegynder
28. august 2003 - 23:21 #6
jo...
Avatar billede eagleeye Praktikant
28. august 2003 - 23:22 #7
prøv med timediff,
ved du hvilken version af mySQL du har?

SQL = "SELECT * FROM tabelnavn WHERE TIMEDIFF(MINUTE ,lastmove,now()) < 10"
Avatar billede eagleeye Praktikant
28. august 2003 - 23:23 #8
Hvilken type er kolonne lastmove?
Avatar billede danq Nybegynder
28. august 2003 - 23:24 #9
det virkede heller ikke.. jeg kører MySQL 3.23.54.. eller rettere sagt det gør min udbyder(cliche.dk... det siger alt.. *g*)
Avatar billede danq Nybegynder
28. august 2003 - 23:25 #10
Det er text
Avatar billede eagleeye Praktikant
28. august 2003 - 23:32 #11
Ok, DATEDIFF og TIMEDIFF er først med fra 4.1.1

Så må det laves i sådan her:

dato = DateAdd("n",-10,now)
dato = Year(dato) & "-" & Month(dato) & "-" & Day(dato) & " "
dato = dato & Hour(dato) & ":" & Minute(dato) & ":" & Second(dato)

SQL = "SELECT * FROM tabelnavn WHERE lastmove >= '" &dato & "'"


Det ikke sikkert det virker hvis datoen i kolonne ikke ligger i yyyy-mm-dd hh:nn:ss da mySQL bruger det format.
Avatar billede danq Nybegynder
28. august 2003 - 23:35 #12
Det må jeg sgu sige. Det med asp/mysql har du sgu styr på. Jeg takker mange gange for tiden og hjælpen og overrækker hermed 60 point.
MVH Dan
Avatar billede eagleeye Praktikant
29. august 2003 - 15:51 #13
Ok prøv med dette dog stadig ret så ASP koden bliver som vist før og her igen:
det som der forhåbenligt sker er at  dd-mm-yyyy hh:nn:ss  bliver til yyyy-mmm-dd hh:nn:ss

dato = DateAdd("n",-10,now)
dato = Year(dato) & "-" & Month(dato) & "-" & Day(dato) & " "
dato = dato & Hour(dato) & ":" & Minute(dato) & ":" & Second(dato)

SQL = "SELECT * FROM tabelnavn WHERE CONCAT(SUBSTRING(lastmove,7,4),'-',SUBSTRING(lastmove,4,2),'-',SUBSTRING(lastmove,1,2),' ',SUBSTRING(lastmove,12,8)) >= '" & dato & "'"




Det er vigtig der står 0 hvis eksvis månede er august sådan her 08 og ikke kun 8 i tabellen.
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