DATEPART
功能描述
Vastbase在SQL Server模式下支持DATEPART函数,用于返回表示指定 date 的指定 datepart 的整数,返回值为整数类型。
注意事项
- 该功能仅在数据库兼容模式为SQL Server时能够使用(即创建DB时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。
- 该函数支持的Vastbase版本:
- V2.2 Build 10 (Patch No.11)及以后补丁版本。
- V2.2 Build 12及以后版本。
语法格式
DATEPART(datepart,date)
参数说明
datepart
datepart将返回表示 date 参数的特定部分的整数,支持的datepart参数如下所示:
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 毫微秒 tzoffset tz 时区偏移量 iso_week isowk,isoww ISO标准周数 date
要返回datepart值的日期、时间或时间戳表达式。日期表达式必须包含datepart类型的值。
可解析为下列值之一的表达式:
- time
- timetz
- date
- timestamp
- timestamptz
示例
前置步骤:创建兼容模式为SQL Server的库db_sqlserver,并进入。
CREATE DATABASE db_sqlserver DBCOMPATIBILITY='MSSQL';
\c db_sqlserver
示例1:直接调用DATEPART函数。
SELECT DATEPART(m,timestamp'2007-10-30 12:15:32.1234567');
结果返回如下:
datepart
----------
10
(1 row)
示例2:date参数为行存表中的列。
1、创建测试表并插入数据。
create table tb_info(id int,name text,birth date);
insert into tb_info values(1,'lili','1999-11-11');
insert into tb_info values(2,'kiko','2000-2-15');
insert into tb_info values(3,'lala','2001-1-3');
insert into tb_info values(4,'ming','1999-5-7');
create table tb_class(class int,year int);
insert into tb_class values(4,2001);
insert into tb_class values(5,2000);
insert into tb_class values(6,1999);
insert into tb_class values(7,1998);
2、查询表中数据。
select * from tb_info order by id;
结果返回如下:
id | name | birth
----+------+------------
1 | lili | 1999-11-11
2 | kiko | 2000-02-15
3 | lala | 2001-01-03
4 | ming | 1999-05-07
(4 rows)
select * from tb_class order by class;
结果返回如下:
class | year
-------+------
4 | 2001
5 | 2000
6 | 1999
7 | 1998
(4 rows)
3、调用DATEPART函数查询数据。
select datepart(yy,birth),sum(datepart(yy,birth))/datepart(yy,birth) count from tb_info having datepart(yy,birth) group by 1 order by 1;
结果返回如下:
datepart | count
----------+-------
1999 | 2
2000 | 1
2001 | 1
(3 rows)