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)