webForumDet fria alternativet

Hjälp med Datediff och MySQL!

5 svar · 363 visningar · startad av lbrink

lbrinkMedlem sedan aug. 200160 inlägg
#1

Hejsan Webforum!
Håller på med ett inloggninssystem som använder Access som databas, men vill nu gå över till MySQL.
Jag har dock fastnat med en datumfunktion.

Såhär ser hela den koden som datumfunktionen körs i:
Conn.Execute("UPDATE members Set online = 'offline' Where online = 'online' AND senast <= dateadd('s',-701,now()) ")

Denna kod ska rensa alla användare som har glömt att logga ut.

senast <= dateadd('s',-701,now())
Denna kod kollar om användarens "senast" kolumn har blivit uppdaterad under dem senast 701 sekunder, om inte så uppdateras användarens "online" kolumn.

Nu till problemet:
Vad jag har förståt så funkar varken Dateadd eller datediff med MySQL, och det är just här problemet uppstår, hur ska
"senast <= dateadd('s',-701,now()) "
se ut för att vara "MySQL-kompatibel"?

PoffeMedlem sedan apr. 20022 743 inlägg
#2

testa:

Conn.Execute("UPDATE members Set online = 'offline' Where online = 'online' AND datediff('s', senast, Now) >=701 ")
lbrinkMedlem sedan aug. 200160 inlägg
#3

Poffe:
Tyvärr , funka inte det där heller.

Felmeddelandet jag får är:
"Microsoft OLE DB Provider for ODBC Drivers (0x80040E09)
[TCX][MyODBC]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('s',-701,now())' at line 1"

LarsGMedlem sedan dec. 200012 464 inlägg
#4

Flyttad från ASP.

Datediff/dateadd är inga standardfunktioner

Conn.Execute "UPDATE members Set online = 'offline' Where online = 'online' AND date_add(senast, interval 701 second) < current_timestamp"

I och för sig så är Mysqls funktiner inte närmare standard heller.

lbrinkMedlem sedan aug. 200160 inlägg
#5

Tack LarsG, det funkade utmärkt.

WebbisNetMedlem sedan feb. 20032 027 inlägg
#6

Om jag fortsätter på detta inlägg så får jag med objConn.Execute("DELETE FROM tblUsers WHERE DateDiff('d', Datum, Now) > 86") detta fel:
[MySQL][ODBC 3.51 Driver][mysqld-4.0.23a-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '('d', Datum, Now) > 86' at line 1

Jag vill att alla som inte har loggat in de senaste 86 dagarna ska raderas från db, ett annat problem är att inga poster raderas så koden verkar inte köras.....hade denna kod när jag körde med access. Nu när jag har MySQL så funkar inte koden och koden kommer troligtvis inte att köras nu heller.....hur får man den att köras automatiskt när man får koden att funka

136 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)