2017-12-13 17 views
2

どのようにして、2つの日付の所定の間隔で5歳または10歳の顧客リストを取得できますか?SQLは年齢別に顧客を取得します

のみ1日のクエリは次のとおりです。

SELECT * FROM Customers C 
WHERE DATEDIFF(MONTH,C.StartDate,@Date)=60 
OR DATEDIFF(MONTH, C.StartDate,@Date)=120 
+0

の下のようなクエリを使用することができ、これは "SQL" 何のためにあるのかデータベースを知っている必要がありません十分に使い慣れていない。 SQL Serverのように見えます。それは...ですか? –

+0

SQ Server 2012. – Nonick

答えて

3

あなたは、彼らが5以下の開始時と終了時に5以上ある顧客をしたい - これは範囲の中でいくつかの点で彼らがいたことを意味します5.

SELECT * FROM Customers C 
WHERE (DATEDIFF(MONTH,C.StartDate,@StartDate)<=60 AND DATEDIFF(MONTH,C.StartDate,@EndDate) >=60) 
    OR (DATEDIFF(MONTH,C.StartDate,@StartDate)<=120 AND DATEDIFF(MONTH,C.StartDate,@EndDate) >=120) 
0

T-SQLのDATEDIFF関数の構文は次のとおりです。

DATEDIFF (datepart , startdate , enddate) 

DATの順序重要なのは、正の整数の結果を得るには、前の日付を最初に、後の日付を秒にする必要があります。あなたがそれを行うなら、結果は負の数になります。

あなたはABSを(使用してこれを克服することができます)

ABS(DATEDIFF (datepart , date1 , date2) ) 
1

あなたは See live demo

DECLARE @Date1 DATE 
DECLARE @Date2 DATE 
SET @Date1='03-19-2017' 
SET @Date2='12-19-2017' 

SELECT * FROM Customers C 
WHERE (DATEADD(m, 60,C.StartDate) BETWEEN @Date1 AND @Date2) 
OR 
(DATEADD(m, 120,C.StartDate) BETWEEN @Date1 AND @Date2) 
+0

ありがとうございました。 私はDate1とDate2の日を考慮していないので、私はdatediffを使用する必要があると思います。 – Nonick

関連する問題