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中强大且常用的日期函数。它们允许我们添加和减去日期值,并计算不同日期部分之间的时间差。