偶尔,我们可能需要从SQL Server数据库的表中检索一个日期的一部分,如日、月、或年。datepart函数为我们提供了这种功能,正如我们在本指南中所看到的那样。
这篇文章的基础是为你提供使用SQL Server datepart函数的基本知识。
基本用法
datepart函数允许你获取部分数据的年、月、日。该函数将日期的一部分作为整数值返回。
该函数的语法如下
datepart(unit, date_value);
函数参数
datepart函数接受两个参数
1.unit - 这表示SQL Server应该检索日期的哪一部分。这个参数的接受值如下表所示。
unit abbreviation
-------------------------------------------------- ------------
nanosecond ns
microsecond mcs
millisecond ms
SECOND s, ss
MINUTE mi,n
HOUR hh
week wk, ww
DAY dd, d
DAY OF YEAR, dy, y
MONTH mm, m
quarter qq, q
YEAR yy, yyyy
(12 ROWS affected)
2.date_value - 代表输入的日期,从中检索出指定的部分。
函数的返回类型
如前所述,该函数以整数类型返回日期的提取部分。该函数只能从一个特定的输入日期中提取年、月、日。
SQL Server datepart() 示例
让我们看一下使用datepart函数的各种例子,以更好地了解如何在T-SQL脚本中使用它。
例子1:
下面的例子显示了如何使用datepart函数从指定的日期中检索出一个年份。
SELECT datepart(YEAR, '2021-12-31') AS YEAR;
上面的查询应该返回日期中代表年份的部分。
输出示例如图所示
YEAR
-----------
2021
例2:
在这个例子中,我们使用datepart函数来检索一个日期在不同单位中的部分。
DECLARE @input_date datetime2= CURRENT_TIMESTAMP;
SELECT datepart(YEAR, @input_date) AS YEAR,
datepart(quarter, @input_date) AS quarter,
datepart(MONTH, @input_date) AS MONTH,
datepart(dayofyear, @input_date) AS dayofyear,
datepart(DAY, @input_date) AS DAY,
datepart(week, @input_date) AS week,
datepart(HOUR, @input_date) AS HOUR,
datepart(MINUTE, @input_date) AS MINUTE,
datepart(SECOND, @input_date) AS SECOND,
datepart(millisecond, @input_date) AS millisecond,
datepart(microsecond, @input_date) AS microsecond,
datepart(nanosecond, @input_date) AS nanosecond;
上面的查询使用当前的时间戳,用datepart函数提取各种单位。
得到的数值如图所示

例3
我们还可以在真实的数据库中使用datepart。例如,下面的查询从一个列中提取年份。
USE WideWorldImporters;
SELECT top 10 datepart(DAY, ExpectedDeliveryDate) AS DAY FROM Sales.Orders
WHERE ExpectedDeliveryDate IS NOT NULL;
在这个例子中,我们使用datepart函数来获得预期交货日期的日期。
最后的感想
本指南帮助你探索SQL Server datepart函数的功能。使用datepart函数,你可以提取各种日期单位并在其他列中使用它们。