SQL SERVER DateDiff、DATEADDメソッドの使い方
3188 ワード
1、DATEDIFF
構文の簡単な説明:DATEDIFF(date-part,date-expression 1,date-expression 2)
機能:2つの日付間の間隔を返します.パラメータの簡単な説明:date-part:year|quarter|month|week|day|hour|minute|second|millisecond date-partその間隔を計算する日付部分を指定します.date-expression 1間隔の開始日.この値をdate-expression 2から減算し、2つのパラメータ間のdate-partsの数値を返します.date-expression 2の間隔の終了日.この値からDate-expression 1を減算し、2つのパラメータ間のdate-partsの値を返します.
2、DATEADD
構文の簡単な説明:DATEDIFF(date-part,date-expression 1,date-expression 2)
機能:2つの日付間の間隔を返します.パラメータの簡単な説明:date-part:year|quarter|month|week|day|hour|minute|second|millisecond date-partその間隔を計算する日付部分を指定します.date-expression 1間隔の開始日.この値をdate-expression 2から減算し、2つのパラメータ間のdate-partsの数値を返します.date-expression 2の間隔の終了日.この値からDate-expression 1を減算し、2つのパラメータ間の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
--*/