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');
相关推荐
XDHCOM16 小时前
ORA-32484重复列名错误,ORACLE数据库CYCLE子句故障修复与远程处理方案
数据库·oracle
翻斗包菜17 小时前
PostgreSQL 日常维护完全指南:从基础操作到高级运维
运维·数据库·postgresql
呆瑜nuage17 小时前
MySQL表约束详解:8大核心约束实战指南
数据库·mysql
liliangcsdn17 小时前
Agent Memory智能体记忆系统的示例分析
数据库·人工智能·全文检索
那个失眠的夜17 小时前
Mybatis延迟加载策略
xml·java·数据库·maven·mybatis
Rick199317 小时前
SQL 执行流程
数据库·sql
M--Y17 小时前
Redis常用数据类型
数据结构·数据库·redis
元宝骑士17 小时前
FIND_IN_SET使用指南:场景、优缺点与MySQL优化策略
后端·mysql
猿小喵18 小时前
MySQL慢查询分析与处理-第二篇
数据库·mysql·性能优化
Y0011123618 小时前
MySQL-进阶
开发语言·数据库·sql·mysql