掌握SQL服务器日期部分功能的用法

158 阅读2分钟

偶尔,我们可能需要从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函数,你可以提取各种日期单位并在其他列中使用它们。