SELECT [emp].[FirstName]
,[emp].[LastName]
,[emp].[Birthday]
FROM [Employees] AS [emp]
WHERE [emp].[ID] != 12
AND MONTH([emp].[Birthday]) IN (MONTH(GETDATE()),MONTH(DATEADD(MONTH,1,GETDATE())))
AND DAY([emp].[Birthday]) >= DAY(GETDATE())
UPDATE
を確認することができますどのように任意のアイデアではないですこれがこの複雑になる可能性はありませんでした。現在の日付が数字の誕生日よりも大きい場合、上記のクエリは機能しません(例:現在のdaテが29、誕生日が来月3日になる)
これまでのところ、私は更新されたバージョンを試してみましたが、これまではうまくいきました。
SELECT [emp].[FirstName]
,[emp].[LastName]
,[emp].[Birthday]
FROM [Employees] AS [emp]
WHERE [emp].[ID] != 12
AND ((MONTH([emp].[Birthday]) = MONTH(GETDATE()) AND DAY([emp].[Birthday]) > DAY(GETDATE()))
OR (MONTH([emp].[Birthday]) = MONTH(DATEADD(MONTH,1,GETDATE())) AND DAY([emp].[Birthday]) < DAY(DATEADD(MONTH,1,GETDATE()))))
だから、ロジックは次のとおりです。
If
誕生日の月、現在の月のようにsame
あり、そして日付が誕生日の月がcurrent+1
月であれば、その日はあるべき、現在の日付よりもgreater
ELSE
する必要がありますlesser
より翌月の日付。
使用しているSQL Serverのバージョンはどれですか? – DavidG