到着予定日は&です。いずれの場合も、次のように仮想日付を作成することができます。この場合
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';
あなたは同じ結果を得る必要がありますが、今年は完全に無視されます。
私は3月21日から4月20日まで、みんなの誕生日を捜しています。私は入力したように私の年を入力することはできません。他の月のデータはBGR = 'S'またはBGR = 'SL' – GiveChance
@GiveChanceそれがポイントです。この式は、現在の年の新しい日付を作成します。 – Manngo
ちょうど同じ方法DATEFROMPARTS(年(getdate())、03,21)とDATEFROMPARTS(年(getdate())、04,20) – luly