Hej! Så här ungefär.. I version 4.1 eller senare av MySQL finns DATEDIFF. Syntaxen hittar ni här: http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html#IDX1381 Tackar, men det är 4.0.x. UNIX_TIMESTAMP(): http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html#IDX1422 Ett stort tack till alla!Ett slags index med olika faktorer
Jag tänkte göra en topplista som sorteras utefter ett slags index baserat på följande:
tbl_toplist_users
userId
userIn
userOut
userStart (nollställs varje söndag)
Detta index skulle rent matematiskt skapas enligt följande:
(userIn + (userOut/5)) / (DateDiff(userStart -- Now))
Alltså att userIn har störst betydelse och att ju längre tid som gått desto fler röster behövs för att bibehålla sitt index-tal. Detta gör det också möjligt för nya användare att gå med enkelt.
Jag har ärligt talat ingen aning om hur det skall lösas i SQL.
"SELECT userId, userIn, userOut FROM `databas2`.`tbl_toplist_users` Order By userIn DESC limit 15"
Är grunden.
Tacksam för allt!
Mvh
JoakimSv: Ett slags index med olika faktorer
SELECT Namn, (userIn + (userOut/5)) / (DateDiff(userStart -- Now)) AS MySortOrder
FROM TBL
ORDER BY MySortOrder DESC, Namn ASC
men jag vet ej om denna syntax funkar i MySQL.
OlaSv: Ett slags index med olika faktorer
Annars kan man omvandla en tidpunkt till sekunder sedan 1970 genom funktionen UNIX_TIMESTAMP(). Sedan kan man få ut differensen mellan två tidpunkter genom enkel subtraktion.Sv: Ett slags index med olika faktorer
Hur fungerar UNIX_TIMESTAMP()?
Tack på förhand!
Mvh
JoakimSv: Ett slags index med olika faktorer
Sv: Ett slags index med olika faktorer
Jag löste det så här:
SELECT *, (userIn + (userOut/5)) / ((UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(userFrom))/60/60) As userIndex FROM `db2`.`tbl_toplist_users` Order By userIndex DESC, userId ASC limit 15"
/Joakim