HGDB创建同名同参函数实现SqlServer中的DATEADD函数

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HGDB创建同名同参函数实现SqlServer中的DATEADD函数相关的知识,希望对你有一定的参考价值。

目录
环境
文档用途
详细信息

环境
系统平台:Linux x86-64 Red Hat Enterprise Linux 7
版本:4.3.4.5
文档用途
SqlServer的内置函数DATEADD()在日期中添加或减去指定的时间间隔,HGDB中没有这个内置函数,可以通过编写同名同参的函数来实现相同的功能。

详细信息
SqlServer中DATEADD用法:

DATEADD(datepart,number,date)

date参数是合法的日期表达式;number是指定添加或减去的时间间隔,此数可以是正数或负数;datepart参数可以是年,月,日等。

HGDB实现相应的功能创建DATEADD函数:

highgo=# create or replace function dateadd(in txtDatepart text,in intNumber integer,in timeVal timestamp)
returns timestamp as
B O D Y BODY BODY
begin
if upper(txtDatepart)= ‘YEAR’ then return add_months(timeVal,intNumber * 12);
end if;
if upper(txtDatepart)= ‘D’ or upper(txtDatepart)= ‘DAY’ then
return add_days_to_timestamp(timeVal,intNumber);
end if;
end;
B O D Y BODY BODY
language plpgsql;
CREATE FUNCTION
注:参数txtDatepart需要对其它值进行添加减去(如月份等),可以再追加if语句。

创建测试表:

highgo=# create table test_DATEADD(id integer,name varchar,setdate timestamp);
CREATE TABLE

highgo=# insert into test_dateadd values (1,‘hope’,‘2020-01-01’);
INSERT 0 1

使用如下SELECT语句:

highgo=# select id,dateadd(‘year’,1,setdate) as setdate from test_dateadd;
id | setdate
----±--------------------
1 | 2021-01-01 00:00:00
(1 行记录)

highgo=# select id,dateadd(‘year’,-1,setdate) as setdate from test_dateadd;
id | setdate
----±--------------------
1 | 2019-01-01 00:00:00
(1 行记录)

执行DATEADD()函数可以对日期进行指定时间间隔的添加或减去。

更多详细信息请登录【瀚高技术支持平台】查看https://support.highgo.com/#/index/docContent/90217aa30110d80f

以上是关于HGDB创建同名同参函数实现SqlServer中的DATEADD函数的主要内容,如果未能解决你的问题,请参考以下文章

HGDB兼容MySQL date_format函数

HGDB兼容MySQL date_format函数

Java面向对象之方法重写详解

纯虚函数和虚函数的联系

c++ 函数的隐藏和覆盖

HGDB的分区表实现SQL Server的分区视图