DATEPART
功能描述
Vastbase G100在SQL Server模式下支持DATEPART函数,用于返回表示指定 date 的指定 datepart 的整数,返回值为整数类型。
语法格式
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时DBCOMPATIBILITY='MSSQL'),在其他数据库兼容模式下不能使用该特性。
示例
前置步骤:创建兼容模式为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)