timestampdiff (MYSQL)函数在Highgo DB中的写法

文章目录

环境

系统平台:N/A

版本:4.3.4.6

症状

MYSQL中正常执行的业务SQL报错,找不到timestampdiff函数。

问题原因

在做MYSQL到Highgo DB 迁移适配工作时,客户大量使用了timestampdiff 函数,修改比较麻烦,希望可以使用同名函数来替代。

解决方案

sql 复制代码
CREATE OR REPLACE FUNCTION TIMESTAMPDIFF(p_what varchar2, p_d1 timestamp, p_d2  timestamp)

RETURNS numeric

LANGUAGE plpgsql

AS $function$

DECLARE

l_result     number;

t_result       number;

begin

        l_result:=null;

        --秒

        if   (LOWER(p_what)   =  'second')   then

               select floor(extract(epoch from (p_d2-p_d1))) into t_result;

              l_result := t_result;

        end   if;

        --小时

        if   (LOWER(p_what)   =  'minute')   then

               select floor(extract(epoch from (p_d2-p_d1))/60) into t_result;

              l_result := t_result;

        end   if;

        --天

        if   (LOWER(p_what)   =   'hour')   then

               select floor(extract(epoch from (p_d2-p_d1))/60/60) into t_result;

              l_result := t_result;

        end   if;

         if   (LOWER(p_what)   =   'day')   then

               select floor(extract(day from (p_d2-p_d1))) into t_result;

              l_result := t_result;

        END IF;

    return   l_result;

end;

$function$

示例:

sql 复制代码
select TIMESTAMPDIFF('SECOND', '2018-03-20 09:00:00', '2018-03-22  10:00:01');
相关推荐
m0_613856296 分钟前
mysql如何优化重复索引_mysql冗余索引查找与处理
jvm·数据库·python
四维迁跃7 分钟前
Python Web开发如何防范SQL注入_使用参数化查询与ORM实践
jvm·数据库·python
2401_8330336214 分钟前
如何自动更新SQL标签状态_利用触发器实现基于逻辑的状态机
jvm·数据库·python
2401_8314194418 分钟前
mysql如何优化数据库文件写入速度_配置innodb刷盘策略
jvm·数据库·python
YaBingSec28 分钟前
玄机网络安全靶场:Hadoop YARN ResourceManager 未授权 RCE WP
大数据·数据库·hadoop·redis·笔记·分布式·web安全
m0_6356474828 分钟前
Qt打包含有第三方库的软件为应用程序——CQtDeployer
开发语言·数据库·qt
Aloudata33 分钟前
如何通过 NoETL 指标平台构建企业唯一指标计算中心
大数据·数据库·数据分析·指标平台
qq_40999093?34 分钟前
NoSQL数据库解析:Redis
数据库·redis·nosql
小碗羊肉35 分钟前
【MySQL | 第五篇】事务
数据库·mysql
dFObBIMmai36 分钟前
Python Celery任务队列怎么配_实现Web后台异步任务调度处理
jvm·数据库·python