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 @tWHERE 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.0007 bb 1989-12-11 00:00:00.000--*/--查詢 2003-12-05 至 2006-02-28 生日的記錄SET @dt2='2006-02-28'SELECT * FROM @tWHERE 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.0002 bb 1996-02-29 00:00:00.0007 bb 1989-12-11 00:00:00.000--*/