SQL Server DATEPART()函数简介

DATEPART()函数返回一个整数,它是日期的一部分,例如日,月和年。

以下是DATEPART()函数的语法:

DATEPART ( date_part , input_date )
SQL

DATEPART()函数有两个参数:

  • date_part是要提取的日期的一部分(参见下表中的有效日期部分)。
  • input_date是提取日期部分的日期。
date_part 缩写形式
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK isowk, isoww

SQL Server DATEPART()示例

下面来看一些使用DATEPART()函数的例子。

1. 将DATEPART()函数与变量一起使用

这个示例中将使用DATEPART()函数提取日期值的各个部分存储在变量中:

DECLARE @d DATETIME = '2022-03-04 15:30:18';
SELECT 
   DATEPART(year, @d) year, 
   DATEPART(quarter, @d) quarter, 
   DATEPART(month, @d) month, 
   DATEPART(day, @d) day, 
   DATEPART(hour, @d) hour, 
   DATEPART(minute, @d) minute, 
   DATEPART(second, @d) second;
SQL

执行上面查询语句,得到以下结果:

Datepart()函数

2. 使用DATEPART()函数与表列示例

下面将使用示例数据库中的sales.orderssales.order_items进行演示。

订单表结构

以下示例使用DATEPART()函数按年,季度,月和日查询总销售额。

SELECT DATEPART(year, shipped_date) [year], 
       DATEPART(quarter, shipped_date) [quarter], 
       DATEPART(month, shipped_date) [month], 
       DATEPART(day, shipped_date) [day], 
       SUM(quantity * list_price) gross_sales
FROM sales.orders o
     INNER JOIN sales.order_items i ON i.order_id = o.order_id
WHERE shipped_date IS NOT NULL
GROUP BY DATEPART(year, shipped_date), 
         DATEPART(quarter, shipped_date), 
         DATEPART(month, shipped_date), 
         DATEPART(day, shipped_date)
ORDER BY [year] DESC,  [quarter],  [month],  [day];
SQL

执行上面查询语句,得到以下结果:
DATEPART()函数与表列示例

在此示例中,使用DATEPART()函数从shipped_date列中的值中提取年,季度,月和日。 在GROUP BY子句中,我们按日期部分汇总了总销售额(quantity * list_price)。

请注意,可以在SELECT,WHERE,HAVING,GROUP BY和ORDER BY子句中使用DATEPART()函数。