SQL Server 中的 日期操作技巧

1. 概述

日期操作在 SQL Server 中是非常常见的,无论是在应用程序代码中还是在存储过程或函数中,都需要处理日期和时间数据类型。在本文中,我们将介绍一些最常见的日期操作技巧。

2. 获取当前日期和时间

2.1 获取当前日期

要获取当前日期,可以使用 SQL Server 内置的函数 GETDATE。该函数返回当前日期的日期时间值。

SELECT GETDATE() AS CurrentDate

查询结果如下:

CurrentDate

-----------------------

2022-02-16 17:05:24.390

注意:该函数返回一个带有日期和时间的值。如果您只需要日期,可以使用 CONVERT 函数将其转换为所需格式。

2.2 获取当前时间

要获取当前时间,可以使用 GETDATE函数并使用 CONVERT 函数将其转换为时间格式 HH:MIHH:MI:SS

SELECT CONVERT(varchar(8), GETDATE(), 8) AS CurrentTime

查询结果如下:

CurrentTime

--------

17:05:24

3. 计算日期和时间差

3.1 计算日期差

要计算两个日期之间的天数差,可以使用 DATEDIFF 函数。

SELECT DATEDIFF(day, '2022-02-01', '2022-02-16') AS DaysBetween

查询结果如下:

DaysBetween

-----------

15

3.2 计算时间差

要计算两个时间之间的时间差(秒、分钟、小时),可以使用 DATEDIFF 函数,该函数的参数应该是 secondminutehour

DECLARE @StartTime DATETIME, @EndTime DATETIME

SET @StartTime = '2022-02-16 16:00:00'

SET @EndTime = '2022-02-16 17:00:30'

SELECT DATEDIFF(second, @StartTime, @EndTime) AS SecondsBetween

查询结果如下:

SecondsBetween

--------------

3630

4. 转换日期和时间格式

4.1 将日期和时间转换为字符串

要将日期和时间转换为字符串,可以使用 SQL Server 内置的函数 CONVERT。该函数需要三个参数:要将日期/时间值转换为的目标数据类型、要转换的日期/时间值和格式代码。

SELECT CONVERT(VARCHAR(10), GETDATE(), 120) AS DateString

在此示例中,我们将 GETDATE() 函数返回的日期时间值转换为字符串,并将字符串格式化为 'YYYY-MM-DD' 的格式。

查询结果如下:

DateString

----------

2022-02-16

4.2 将字符串转换为日期和时间

要将字符串转换为日期和时间类型,可以使用 SQL Server 内置的函数 CONVERT。该函数需要两个参数:要转换为的目标数据类型和要转换的字符串值。

SELECT CONVERT(datetime, '2022-02-16 17:05:24.390', 120) AS DateTimeValue

在此示例中,我们将字符串值 '2022-02-16 17:05:24.390' 转换为日期时间值。

查询结果如下:

DateTimeValue

-----------------------

2022-02-16 17:05:24.390

5. 日期函数

5.1 DATEADD 函数

DATEADD 函数用于将一定的时间加到指定日期中。该函数需要三个参数:要添加的时间值、要添加的时间单位和要添加时间值的日期。

SELECT DATEADD(day, 10, '2022-02-05') AS ResultDate

在此示例中,我们将日期 '2022-02-05' 加上 10 天。

查询结果如下:

ResultDate

-----------------------

2022-02-15 00:00:00.000

5.2 YEAR 函数

YEAR 函数接受一个日期或时间参数,并返回该日期或时间参数的年份。

SELECT YEAR('2022-02-16') AS ResultYear

在此示例中,我们将日期 '2022-02-16' 传递给 YEAR 函数,并返回其年份。

查询结果如下:

ResultYear

-----------

2022

5.3 MONTH 函数

MONTH 函数接受一个日期或时间参数,并返回该日期或时间参数的月份。

SELECT MONTH('2022-02-16') AS ResultMonth

在此示例中,我们将日期 '2022-02-16' 传递给 MONTH 函数,并返回其月份。

查询结果如下:

ResultMonth

------------

2

5.4 DAY 函数

DAY 函数接受一个日期或时间参数,并返回该日期或时间参数的天数。

SELECT DAY('2022-02-16') AS ResultDay

在此示例中,我们将日期 '2022-02-16' 传递给 DAY 函数,并返回其天数。

查询结果如下:

ResultDay

----------

16

5.5 DATENAME 函数

DATENAME 函数接受一个日期或时间类型的参数,并根据不同的格式代码返回不同的日期或时间部分(如年、月、日、小时、分钟或秒)。返回的值是字符串。

SELECT DATENAME(year, '2022-02-16') AS ResultYear

在此示例中,我们将日期 '2022-02-16' 传递给 DATENAME 函数,并返回其年份部分。

查询结果如下:

ResultYear

-----------

2022

6. 小结

在本文中,我们讨论了许多不同的日期操作技巧,包括获取当前日期和时间、计算日期和时间差、转换日期和时间格式、日期函数等。这些操作都是在 SQL Server 中非常常见的,在正确使用这些技巧的同时,可以提高我们的工作效率。

数据库标签