どのようにして、2つの日付の所定の間隔で5歳または10歳の顧客リストを取得できますか?SQLは年齢別に顧客を取得します
のみ1日のクエリは次のとおりです。
SELECT * FROM Customers C
WHERE DATEDIFF(MONTH,C.StartDate,@Date)=60
OR DATEDIFF(MONTH, C.StartDate,@Date)=120
どのようにして、2つの日付の所定の間隔で5歳または10歳の顧客リストを取得できますか?SQLは年齢別に顧客を取得します
のみ1日のクエリは次のとおりです。
SELECT * FROM Customers C
WHERE DATEDIFF(MONTH,C.StartDate,@Date)=60
OR DATEDIFF(MONTH, C.StartDate,@Date)=120
あなたは、彼らが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)
T-SQLのDATEDIFF関数の構文は次のとおりです。
DATEDIFF (datepart , startdate , enddate)
DATの順序重要なのは、正の整数の結果を得るには、前の日付を最初に、後の日付を秒にする必要があります。あなたがそれを行うなら、結果は負の数になります。
あなたはABSを(使用してこれを克服することができます)
ABS(DATEDIFF (datepart , date1 , date2) )
あなたは 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)
ありがとうございました。 私はDate1とDate2の日を考慮していないので、私はdatediffを使用する必要があると思います。 – Nonick
の下のようなクエリを使用することができ、これは "SQL" 何のためにあるのかデータベースを知っている必要がありません十分に使い慣れていない。 SQL Serverのように見えます。それは...ですか? –
SQ Server 2012. – Nonick