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');
相关推荐
星恒随风3 分钟前
MySQL 从零入门(六):复合查询详解——多表查询、自连接、子查询与 UNION
linux·服务器·数据库·mysql
无奈笑天下1 小时前
银河麒麟上lsblk命令教程详解
linux·运维·服务器·数据库
xiaoye-duck2 小时前
《C++ 项目:手写大模型接入 SDK》会话模块整合:内存 SessionManager 与 DataManager 持久化联动
开发语言·数据库·c++·语言模型
AllData公司负责人3 小时前
AI大模型数据开发底座系列说明书:AllData集成DB-GPT开源项目建设 AI 多模态分析底座,涵盖模态解析/智能大屏/MCP 扩展!
大数据·数据库·人工智能·gpt·数据采集·数据接入·模态解析
隔窗听雨眠3 小时前
MySQL进程卡死的定位思路与恢复实践
mysql·故障排查·数据库运维
2601_967987374 小时前
Sqlite参考手册
数据库·python·sqlite·api·教程
隔窗听雨眠4 小时前
Oracle日志体系分层结构与故障定位路径
数据库·oracle·故障排查
为思念酝酿的痛4 小时前
C语言操作MySQL
数据库·mysql
ShineWinsu5 小时前
对于Qt:QTabWidget常见属性的解析
开发语言·数据库·c++·qt·浏览器·qtabwidget·标签页
星恒随风15 小时前
MySQL 从零入门(五):MySQL 内置函数详解——日期、字符串、数学函数与实战案例
linux·数据库·笔记·sql·mysql