2017-08-29 1 views
-1

im Versuch, diesen Trending-Algorithmus zu mysql queryPython zu mysql query

# Rewritten code from /r2/r2/lib/db/_sorts.pyx 

from datetime import datetime, timedelta 
from math import log 

epoch = datetime(1970, 1, 1) 

def epoch_seconds(date): 
    td = date - epoch 
    return td.days * 86400 + td.seconds + (float(td.microseconds)/1000000) 

def score(ups, downs): 
    return ups - downs 

def hot(ups, downs, date): 
    s = score(ups, downs) 
    order = log(max(abs(s), 1), 10) 
    sign = 1 if s > 0 else -1 if s < 0 else 0 
    seconds = epoch_seconds(date) - 1134028003 
    return round(sign * order + seconds/45000, 7) 

MySQL-Tabelle zu konvertieren up_count down_count created_date dies möglich haben ist?

fand ich das, aber dies einen Fehler, wenn die down_vode größer ist dann Sie LOG10 (Null) haben, und dies wird

ORDER BY 
    LOG10(ABS(thumbs_up - thumbs_down) + 1) * SIGN(thumbs_up - thumbs_down) 
    + (UNIX_TIMESTAMP(created)/300000) DESC 
LIMIT 100 

Antwort

0

Absturz Dies ist die MySql Übersetzung von Ihnen funktionieren:

SELECT ROUND((INTERVAL(up_count - down_count, -1, 0, 1) - 2) * LOG(GREATEST(ABS(up_count - down_count), 1), 10) + UNIX_TIMESTAMP(created_date)/45000 , 7) FROM your_table