我有一个人才表,拥有一个拥有他们生日的专栏的所有用户。指定年龄范围内的人才最佳方式是什么?这是我所拥有的,但似乎已经过去了几天。有没有更好的办法?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