DATEADD
功能描述
Vastbase G100在SQL Server兼容模式下支持DATEADD函数,用于在日期中添加或减去指定的时间间隔。
语法格式
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时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。
- 函数输入有 date ,time,tiemtz,timestamp,timestampz类型,其中有时区信息时其显示结果会有相应的时区信息。
示例
前置步骤:创建兼容模式为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)