VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

DATEADD

功能描述

Vastbase在SQL Server兼容模式下支持DATEADD函数,用于在日期中添加或减去指定的时间间隔。

注意事项

  • 该功能仅在数据库兼容模式为SQL Server时能够使用(即创建DB时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。
  • 函数输入有 date ,time,tiemtz,timestamp,timestampz类型,其中有时区信息时其显示结果会有相应的时区信息。
  • 该函数支持的Vastbase版本:
    • V2.2 Build 10 (Patch No.11)及以后补丁版本。
    • V2.2 Build 12及以后版本。

语法格式

DATEADD(datepart,number,date)

参数说明

  • datepart

    指定date中要与number整数值相加的部分,支持的参数如下表所示:

    datepart 缩写形式 备注
    year yy,yyyy
    quarter qq,q 季度
    month mm,m
    dayofyear dy,y 一年中的第几天
    day dd,d
    week wk,ww 一年中的第几周
    weekday dw,w 星期几
    hour hh 小时
    minute mi,n 分钟
    second ss,s
    millisecond ms 毫秒
    microsecond mcs 微秒
    nanosecond ns 毫微秒
  • number

    一个表达式,可解析为 DATEADD 将其与date 的 datepart相加的 int类型整数。

  • date

    要处理的目标时间值。

    可解析为下列值之一的表达式:

    • time
    • timetz
    • date
    • timestamp
    • timestamptz

示例

前置步骤:创建兼容模式为SQL Server的库db_sqlserver,并进入。

CREATE DATABASE db_sqlserver DBCOMPATIBILITY='MSSQL';
\c db_sqlserver

示例1:直接调用DATEADD函数,将指定时间增加1分钟。

select dateadd(mi,1,timestamp'1997-12-31 23:59:59');

结果返回如下:

      date_add
---------------------
 1998-01-01 00:00:59
(1 row)

示例2:DATEADD函数与now函数套用,返回当前日期加上10年的日期。

select dateadd(year,10,now()) y;

结果返回如下:

               y
-------------------------------
 2033-02-03 08:50:43.872425+00
(1 row)

示例3:参数为行存表中的列。

1、创建测试表并插入数据。

create table tb_info(id int,name text,birth date,new int);
insert into tb_info values(1,'lili','1995-11-11',4);
insert into tb_info values(2,'kiko','1997-2-15',3);
insert into tb_info values(3,'lala','2000-1-3',1);
insert into tb_info values(4,'ming','2002-5-7',-2);
select * from tb_info order by id;

返回结果如下:

 id | name |   birth    | new
----+------+------------+-----
  1 | lili | 1995-11-11 |   4
  2 | kiko | 1997-02-15 |   3
  3 | lala | 2000-01-03 |   1
  4 | ming | 2002-05-07 |  -2
(4 rows)

2、调用DATEADD函数查询数据。

select dateadd(yy,new,birth),count(dateadd(yy,new,birth)) from tb_info group by 1 order by 1;

结果返回如下:

      date_add       | count
---------------------+-------
 1999-11-11 00:00:00 |     1
 2000-02-15 00:00:00 |     1
 2000-05-07 00:00:00 |     1
 2001-01-03 00:00:00 |     1
(4 rows)