如何将C#DateTime
值(FromCreateDate
和ToCreateDate
)传递给SQL Server 2005以便从视图中进行选择?将C#DateTime的参数传递给SQL Server 2005?
结果集CreateDate
列必须在FromDateDate
和ToCreateDate
之间。
如何将C#DateTime
值(FromCreateDate
和ToCreateDate
)传递给SQL Server 2005以便从视图中进行选择?将C#DateTime的参数传递给SQL Server 2005?
结果集CreateDate
列必须在FromDateDate
和ToCreateDate
之间。
完全一样的,就像任何其他参数...当然这取决于你如何做你的数据访问,但如果我们假设一个SqlCommand
你只引用一个命名参数(@fromDate
/@toDate
)在TSQL,并添加一个名为SqlParameter
S(与.Value = theDate
)的命令:
DateTime end = DateTime.Today, start = end.AddDays(-7); // the last week
using (var conn = new SqlConnection(connectionString))
using (var cmd = conn.CreateCommand())
{
conn.Open();
cmd.Parameters.AddWithValue("@from", start); // fine for DateTime; for strings, use more explicit param
cmd.Parameters.AddWithValue("@to", end); // construction to avoid lots of different-length plans
cmd.CommandText = "SELECT COUNT(1) FROM [Users] WHERE LastSeen >= @from AND LastSeen < @to";
int count = (int) cmd.ExecuteScalar();
}
使用LINQ等等你只是用它在查询中,即
int count = db.Users.Count(user => user.LastSeen>=start && user.LastSeen<end);
我使用的是简单公司为了保持简单,在示例中不要使用它;很明显,你可以SELECT blah
从VIEW
等太...
@Mark:我必须发送两个值作为字符串,然后将它们转换为存储过程中的日期时间? – odiseh 2010-10-19 07:31:26
否;只需将你的'DateTime'变量设置为'yourParameter.Value'。我会添加一个例子... – 2010-10-19 07:33:50
只需设置参数类型SqlDbType.DateTime
如
SqlCommand cmd = new SqlCommand("Select * From dbo.MyView Where createDate = @FromDate", SqlCon);
cmd.Parameters.Add(new SqlParameter(@FromDate, SqlDbType.DateTime));
cmd.Parameters["@FromDate"].Value = fromDate;
嗯,这是ratherly不解的情况:我想作一个报告一种方式,如果我的用户输入的FromCreateDate的日期,然后我比较它createDate列,如果没有,那么我比较创建列只与ToCreateDate值(即<= ToCreateDate) – odiseh 2010-10-19 07:40:00
然后你需要像这样:'WHERE createDate> = @ fromDate AND(@toDate IS NULL OR createDate <= @toDate)'。 – 2010-10-19 08:55:00