在Highgo DB 中创建MySQL兼容函数datediff

文章目录

环境

系统平台: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 参数是合法的日期或日期/时间表达式。

注释:只有值的日期部分参与计算。

测试结果如下:

sql 复制代码
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate;



DiffDate

1

Highgo DB 创建 DATEDIFF 函数:

sql 复制代码
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$

测试结果如下:

sql 复制代码
SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDate;



DiffDate

1
相关推荐
alonewolf_9912 小时前
深入理解MySQL事务与锁机制:从原理到实践
android·数据库·mysql
骑着bug的coder13 小时前
第11讲:主从复制与读写分离架构
后端·mysql
朝依飞13 小时前
fastapi+SQLModel + SQLAlchemy2.x+mysql
数据库·mysql·fastapi
3***g20513 小时前
redis连接服务
数据库·redis·bootstrap
m0_5981772313 小时前
SQL 方法函数(1)
数据库
oMcLin13 小时前
如何在Oracle Linux 8.4上通过配置Oracle RAC集群,确保企业级数据库的高可用性与负载均衡?
linux·数据库·oracle
信创天地13 小时前
核心系统去 “O” 攻坚:信创数据库迁移的双轨运行与数据一致性保障方案
java·大数据·数据库·金融·架构·政务
胖咕噜的稞达鸭13 小时前
进程间的通信(1)(理解管道特性,匿名命名管道,进程池,systeam V共享内存是什么及优势)重点理解代码!
linux·运维·服务器·数据库
德彪稳坐倒骑驴13 小时前
Sqoop入门常用命令
数据库·hadoop·sqoop
资深web全栈开发13 小时前
pg on delete 策略探讨
数据库·pg