Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
reddit pgsql热度函数的mysql版本_Mysql_Schema - Fatal编程技术网

reddit pgsql热度函数的mysql版本

reddit pgsql热度函数的mysql版本,mysql,schema,Mysql,Schema,首先为我的英语感到抱歉,这是我在这里的第一篇帖子,我的英语不如我所希望的那么好,但我希望这足以得到答案 所以你们中的一些人可能现在把他们自己的源代码放在reddit上,我想使用(我稍微修改一下)版本的sql模式和一个hotness算法。问题是模式是用psgsql编写的,我的数据库使用mysql引擎 我试图手动转换模式,但我放弃了,没有效果,所以我再次尝试使用misc工具和应用程序,但它们中甚至没有一个支持过程和函数的转换,问题是我只需要这一个选项 你们有谁能帮我把热度函数转换成: 对于mysql

首先为我的英语感到抱歉,这是我在这里的第一篇帖子,我的英语不如我所希望的那么好,但我希望这足以得到答案

所以你们中的一些人可能现在把他们自己的源代码放在reddit上,我想使用(我稍微修改一下)版本的sql模式和一个hotness算法。问题是模式是用psgsql编写的,我的数据库使用mysql引擎

我试图手动转换模式,但我放弃了,没有效果,所以我再次尝试使用misc工具和应用程序,但它们中甚至没有一个支持过程和函数的转换,问题是我只需要这一个选项

你们有谁能帮我把热度函数转换成:

对于mysql模式,我将非常感激:)


再一次为我的语言感到抱歉,我现在低估了标准:)

我不知道用户定义函数的MySQL语法,但一些特定于PostgreSQL的部分是:

date_part('epoch', $3)
自新纪元(即自1970-01-01 00:00:00)以来,
$3
的秒数

1134028003
从历元到2005-12-08 07:46:43的秒数


也许这对查找MySQL等价物很有用。

我刚刚在下面编写了这个函数,它似乎可以工作

CREATE FUNCTION hot (ups INT(10),downs INT(10),d TIMESTAMP)
RETURNS DOUBLE DETERMINISTIC
RETURN ROUND(LOG(GREATEST(ABS(ups-downs), 1)) + SIGN(ups-downs)*(UNIX_TIMESTAMP(d) - 1134028003) / 45000.0,7);
我将它的输出与的输出进行比较,似乎一切都正常

样本运行:

SELECT hot(20,10,'2013-01-01 00:00:00');

Query OK, 0 rows affected (0.00 sec)

+----------------------------------+
| hot(20,10,'2013-01-01 00:00:00') |
+----------------------------------+
|                     4957.1202962 |
+----------------------------------+
1 row in set (0.00 sec)

但是为什么呢?是因为Reddit在那个日期开始运行吗?@AlbertKam:不知道Reddit为什么选择这个值。但对于重新实现算法来说,这也是不需要知道的。
SELECT hot(20,10,'2013-01-01 00:00:00');

Query OK, 0 rows affected (0.00 sec)

+----------------------------------+
| hot(20,10,'2013-01-01 00:00:00') |
+----------------------------------+
|                     4957.1202962 |
+----------------------------------+
1 row in set (0.00 sec)