SQL中DATEADD和DATEDIFF的用法示例介绍

1. 介绍

DATEADD和DATEDIFF是SQL Server常见的日期函数。他们是在日期方面的函数,用于对日期加/减和计算两个日期之间的差距。

2. DATEADD函数

2.1 DATEADD函数的语法

DATEADD (datepart, number, date)

其中,datepart是指要添加的日期部分,例如日、月、季度等。number是指要添加的数值,例如要添加的天数、月数等。date是指要添加到其中的日期。

2.2 DATEADD函数的实例

下面是一个在日期上添加或减去某个值的简单示例:

SELECT DATEADD(day, 10, '2021-01-01') AS NewDate;

在此示例中,我们向日期 '2021-01-01' 添加了 10 天。也可以添加其他日期部分,如小时,分钟,月份或年份。

SELECT DATEADD(month, 3, '2021-01-01') AS NewDate;

这里是一个在日期上减去某个值的示例:

SELECT DATEADD(day, -10, '2021-01-01') AS NewDate;

这里是一个结合其他函数一起使用的示例:

SELECT DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

该示例使用 GETDATE 函数获取当前日期,然后使用 DATEDIFF 函数获取距离零日期的天数。然后它将此数值添加到零日期,以获取具有零时间的日期。

3. DATEDIFF函数

3.1 DATEDIFF函数的语法

DATEDIFF(datepart, startdate, enddate)

其中,datepart是指要计算的日期部分,例如日、月、季度等。startdate是计算开始的日期,enddate是计算结束的日期。函数会返回startdate和enddate之间的时间跨度。

3.2 DATEDIFF函数的实例

下面是一个简单而常见的实例。它将日期差距返回到天数:

SELECT DATEDIFF(day, '2021-01-01', '2021-01-10') AS DayDiff;

我们还可以使用DATEDIFF函数来计算小时,分钟,月份或年份之间的差距:

SELECT DATEDIFF(hour, '2021-01-01 00:00:00', '2021-01-03 12:00:00') AS HourDiff;

SELECT DATEDIFF(minute, '2021-01-01 00:00:00', '2021-01-03 12:00:00') AS MinuteDiff;

SELECT DATEDIFF(month, '2021-01-01', '2022-01-01') AS MonthDiff;

SELECT DATEDIFF(year, '2021-01-01', '2025-01-01') AS YearDiff;

这里是一个通过结合其他函数一起使用DATEDIFF函数的示例:

SELECT DATEDIFF(day, 0, GETDATE())

在此示例中,我们使用GETDATE函数获取当前日期,并计算它与零日期之间的时间差。在 SQL Server 中,零日期是 '1900-01-01'。

4. 总结

DATEADD和DATEDIFF函数是SQL Server中强大且常用的日期函数。它们允许我们添加和减去日期值,并计算不同日期部分之间的时间差。

数据库标签