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:MI
或 HH: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
函数,该函数的参数应该是 second
、minute
或 hour
。
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 中非常常见的,在正确使用这些技巧的同时,可以提高我们的工作效率。