VastbaseG100

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

Menu

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)