SQL SERVER DateDiff、DATEADD方法的用法

1、DATEDIFF

 

语法简述:
  DATEDIFF(date-part,date-expression1,date-expression2) 

功能:
返回两个日期之间的间隔。
参数简述:   
  date-part :  
  year | quarter | month | week | day | hour | minute | second | millisecond
 
  date-part                        指定要计算其间隔的日期部分。  
   
  date-expression1           某一间隔的起始日期。从   date-expression2   中减去该值,返回两个参数之间   date-parts   的数值。  
   
  date-expression2           某一间隔的结束日期。从该值中减去   Date-expression1,返回两个参数之间   date-parts   的数值。

 

2、DATEADD

 

  语法
DATEADD(datepart,number,date)
DATEADD() 函数在日期中添加或减去指定的时间间隔。
date参数是合法的日期表达式。
number 是您希望添加的间隔数;对于未来的时间,此数是正数,对于过去的时间,此数是负数。
Datepart
参数可以是下列的值: 如: 1)select dateadd(dd,2,getdate())在当前日期基础上添加两天 2)计算一个月的第一天   Select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0) 备注:函数DATEDIFF(mm,0,getdate())是计算当前日期和"1900-01-01 00:00:00.000"这个日期之间的月数。记住:时期和时间变量和毫秒一样是从"1900-01-01 00:00:00.000"开始计算的。这就是为什么你可以在DATEDIFF函数中 指定第一个时间表达式为"0". 3)本周的星期一 Select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0) 4)一年的第一天 Select DATEADD(yy, DATEDIFF(yy,0,getdate()), 0)
3、查询指定日期段内过生日的人员.sql --测试数据 DECLARE @t TABLE(ID int,Name varchar(10),Birthday datetime) INSERT @t SELECT 1,'aa','1999-01-01' UNION ALL SELECT 2,'bb','1996-02-29' UNION ALL SELECT 3,'bb','1934-03-01' UNION ALL SELECT 4,'bb','1966-04-01' UNION ALL SELECT 5,'bb','1997-05-01' UNION ALL SELECT 6,'bb','1922-11-21' UNION ALL SELECT 7,'bb','1989-12-11' DECLARE @dt1 datetime,@dt2 datetime --查询 2003-12-05 至 2004-02-28 生日的记录 SELECT @dt1='2003-12-05',@dt2='2004-02-28' SELECT * FROM @t WHERE DATEADD(Year,DATEDIFF(Year,Birthday,@dt1),Birthday) BETWEEN @dt1 AND @dt2 OR DATEADD(Year,DATEDIFF(Year,Birthday,@dt2),Birthday) BETWEEN @dt1 AND @dt2 /*--结果 ID Name Birthday ---------------- ---------------- -------------------------- 1 aa 1999-01-01 00:00:00.000 7 bb 1989-12-11 00:00:00.000 --*/ --查询 2003-12-05 至 2006-02-28 生日的记录 SET @dt2='2006-02-28' SELECT * FROM @t WHERE DATEADD(Year,DATEDIFF(Year,Birthday,@dt1),Birthday) BETWEEN @dt1 AND @dt2 OR DATEADD(Year,DATEDIFF(Year,Birthday,@dt2),Birthday) BETWEEN @dt1 AND @dt2 /*--查询结果 ID Name Birthday ---------------- ----------------- -------------------------- 1 aa 1999-01-01 00:00:00.000 2 bb 1996-02-29 00:00:00.000 7 bb 1989-12-11 00:00:00.000 --*/

你可能感兴趣的:(SQL SERVER DateDiff、DATEADD方法的用法)