我有一個人才表,擁有一個擁有他們生日的專欄的所有用戶。指定年齡範圍內的人才最佳方式是什麼?這是我所擁有的,但似乎已經過去了幾天。有沒有更好的辦法?c#,建立sql來選擇一個年齡範圍的用戶
// BUILD SQL FROM FORM DATA
sqlString += "SELECT * from Talent";
if (minAge != 0 || maxAge != 120)
{
// The age criteria has been change, filter by age.
// select all talents that have birthdays between the following 2 dates.
DateTime startDate = (DateTime.Now - new TimeSpan((maxAge * 365), 0, 0, 0)); // maxAge * 365 = totalDays
DateTime endDate = (DateTime.Now - new TimeSpan((minAge * 365), 0, 0, 0));
sqlString += " WHERE Birthdate BETWEEN '" + startDate.ToString() + "' AND '" + endDate.ToString() + "'";
}
偏離主題,但...使用參數化的SQL,*不*字符串連接來構建您的查詢。 (無可否認,在這種特殊情況下,不存在SQL注入的風險,但參數化的SQL無論如何都是更清晰的。) – LukeH 2010-11-24 16:14:50
您的`(minAge!= 0 || maxAge!= 120)`子句很奇怪:唯一不允許的範圍是0到120所以-1000到120是可以的; 0到999是可以的; 120到0是OK等等。 – LukeH 2010-11-24 16:19:06
@LukeH。你能提供一些示例代碼嗎?請注意,我在數據庫中的年齡並不像int ...我只有生日的datetime,我用它來計算他們的年齡。 – RayLoveless 2010-11-24 16:47:59