2017-05-07 10 views
0

私は3月21日から4月20日の生年月日の範囲を探していますが、年は関係ありません。私は他の月と日付を検索するときに出てくるようです。生年月日の探し方SQLの範囲

select * from AllStudentInfo Where 
((MONTH(birthDate) >= 3 and day(birthDate) >= 21) 
OR 
(MONTH(birthDate) <= 4 and day(birthDate) <= 20)) 
AND 
(BGRStatus = 'S' OR BGRStatus = 'SL') 

答えて

1

到着予定日は&です。いずれの場合も、次のように仮想日付を作成することができます。この場合

SELECT DATEFROMPARTS (2017,month(birthDate),day(birthDate) as birthday 
FROM AllStudentInfo 

を、あなたが使用することができます。

SELECT * 
FROM AllStudentInfo 
WHERE DATEFROMPARTS (2017,month(birthDate),day(birthDate) 
    BETWEEN '2017-03-21' AND '2017-04-20'; 

2017は任意です。要点は、BETWEEN句の日付が同じ年にあることです。以下のように、より現代的な技術を使用して

、あなたはそれを組み合わせることができます。

WITH cte AS(
    SELECT *,DATEFROMPARTS (2017,month(birthDate),day(birthDate) as birthDay 
    FROM AllStudentInfo 
) 
SELECT * FROM cte WHERE birthDay BETWEEN '2017-03-21' AND '2017-04-20'; 

cteは、サブクエリを使用する代わりに共通テーブル式です。

ここでは、質問の精神に近い選択肢です。あなたは純粋に月&日である式を生成するformat機能を使用することができます。

format(birthDate,'MM-dd') 

MMは2桁の月番号を言ってのMSSQLの方法であり、そしてdd月の2桁の日です。

あなたが使用することができますこの方法:

format(birthDate,'MM-dd') BETWEEN '03-21' AND '04-20' 

再びCTEとして:

WITH cte AS(
    SELECT *,format(birthDate,'MM-dd') as birthDay 
    FROM AllStudentInfo 
) 
SELECT * FROM cte WHERE birthDay BETWEEN '03-21' AND '04-20'; 

あなたは同じ結果を得る必要がありますが、今年は完全に無視されます。

+0

私は3月21日から4月20日まで、みんなの誕生日を捜しています。私は入力したように私の年を入力することはできません。他の月のデータはBGR = 'S'またはBGR = 'SL' – GiveChance

+0

@GiveChanceそれがポイントです。この式は、現在の年の新しい日付を作成します。 – Manngo

+0

ちょうど同じ方法DATEFROMPARTS(年(getdate())、03,21)とDATEFROMPARTS(年(getdate())、04,20) – luly

0
を使用すると、その日付範囲やその月の範囲内にあるものを照会する ORを使用するので、

select * from AllStudentInfo Where 
((MONTH(birthDate) >= 3 and day(birthDate) >= 21) 

AND --Make the change here 

(MONTH(birthDate) <= 4 and day(birthDate) <= 20)) 
AND 
(BGRStatus = 'S' OR BGRStatus = 'SL') 

同様AND

にあなたの文を切り替え

。したがって、毎月他の人の結果を得ることになります。

+0

もし私がANDに変更されていれば、DATAは表示されません。 生年月日が03/26の生徒がいますが – GiveChance

+0

私は1999-03-26のデータを持っていますが、BGRStatusはSですが、変更を使用しているとデータが表示されません。私もANDで試しましたが、データはありません。 – GiveChance

関連する問題