我有一個表舉辦活動和日期:如何將一個SQL表中的日期與另一個表中定義的範圍進行比較?
NAME | DOB
-------------------
Adam | 6/26/1999
Barry | 7/18/2005
Daniel| 1/18/1984
我有另一個表定義的日期範圍爲開始或結束時間,每一個描述性的代碼:
CODE | DATE
---------------------
YearStart| 6/28/2013
YearEnd | 8/14/2013
我想寫SQL將查找所有在第二個表中描述的時間的開始和結束之間的生日。 YearStart將始終在六月,而YearEnd將始終在八月。我的想法是嘗試:
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語句將返回只有一行,所以不能被解析爲日期。我怎樣才能真正完成這個查詢?
「DOB」和「DATE」字段的數據類型是什麼? –
我建議您將'YearStart'和'YearEnd'更改爲'Columns'而不是'Rows' – EmmanuelRC
如果您的第二個表中可能有多行返回,您如何區分範圍? –