环境
系统平台:N/A
版本:4.3.4.6
症状
在MySQL迁移到Highgo DB时,MySQL中使用DATEDIFF函数获取两个日期的间隔,Highgo DB没有该函数,使用DATEDIFF 函数时,报错如下:
SELECT DATEDIFF(‘2008-12-30’,‘2008-12-29’) AS DiffDate;
SQL 错误 [42883]: ERROR: 42883: function datediff(unknown, unknown) does not exist
Hint: No function matches the given name and argument types. You might need to add explicit type casts.
问题原因
Highgo DB中没有DATEDIFF函数,需要手动创建该函数。
解决方案
MySQL中的DATEDIFF() 函数返回两个日期之间的天数。
语法
DATEDIFF(date1,date2)
date1 和 date2 参数是合法的日期或日期/时间表达式。
注释:只有值的日期部分参与计算。
测试结果如下:
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate;
DiffDate
1
Highgo DB 创建 DATEDIFF 函数:
CREATE OR REPLACE FUNCTION datediff(p_d1 date, p_d2 date)
RETURNS numeric
LANGUAGE plpgsql
AS $function$
DECLARE
l_result number;
begin
l_result:=floor(p_d1-p_d2);
return l_result;
end;
$function$
测试结果如下:
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate;
DiffDate
1
1443

被折叠的 条评论
为什么被折叠?



