イベントと日付を保持するテーブルが 1 つあります。
NAME | DOB
-------------------
Adam | 6/26/1999
Barry | 7/18/2005
Daniel| 1/18/1984
日付範囲を開始時間または終了時間として定義する別のテーブルがあり、それぞれに説明的なコードがあります。
CODE | DATE
---------------------
YearStart| 6/28/2013
YearEnd | 8/14/2013
2 番目の表に記載されている開始時刻と終了時刻の間にあるすべての生年月日を検索する SQL を作成しようとしています。YearStart は常に 6 月で、YearEnd は常に 8 月です。私の考えは試してみることでした:
SELECT
u.Name
CAST(MONTH(u.DOB) AS varchar) + '/' + CAST(DAY(u.DOB) AS varchar) as 'Birthdate',
u.DOB as 'Birthday'
FROM
Users u
WHERE
MONTH(DOB) = '7' OR
(MONTH(DOB) = '6' AND DAY(DOB) >= DAY(SELECT d.Date FROM Dates d WHERE d.Code='YearStart')) OR
(MONTH(DOB) = '8' AND DAY(DOB) <= DAY(SELECT d.Date FROM Dates d WHERE d.Code='YearEnd')))
ORDER BY
MONTH(DOB) ASC, DAY(DOB) ASC
内部の SELECT ステートメントが 1 つの行のみを返すという保証がないため、datetime として解析できないためです。このクエリを実際に実行するにはどうすればよいですか?