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');
相关推荐
九零HTTP3 小时前
10月21号-CSDN配菜-IP池的5个坑
服务器·数据库·tcp/ip
Data-Miner3 小时前
需要做财务数据分析,有什么好用的工具?从准备到出报告的实操指南
大数据·数据库·数据分析
袋鼠云数栈4 小时前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
这个DBA有点耶4 小时前
期货 CTP 系统 Oracle RAC 迁移国产库实战:读写分离架构设计与性能对标
数据库·架构·dba
数据库安全4 小时前
AI数据访问安全 |如何控制AI访问权限,防止越权
数据库·安全
小羊没烦恼!5 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
这个DBA有点耶5 小时前
Redo Log循环写与checkpoint推进:长事务阻塞下的Checkpoint风暴完整链路
数据库·mysql·代码规范
jnrjian5 小时前
pg_waldump --key-file-name status 查看wal 产生的db
数据库
SelectDB技术团队6 小时前
Snowflake 的开源替代怎么选:能力对照、三条部署路径与迁移执行
大数据·数据库·云原生·开源·snowflake·apache doris
Elastic 中国社区官方博客6 小时前
告别繁琐控制台:Kabanos 如何将 MongoDB Compass 的易用性带入 Elasticsearch
大数据·数据库·mongodb·elasticsearch·搜索引擎·全文检索