C# 是否将C DateTime参数传递给SQL Server 2005?

C# 是否将C DateTime参数传递给SQL Server 2005?,c#,sql-server-2005,datetime,C#,Sql Server 2005,Datetime,如何将CreateDate和ToCreateDate中的C DateTime值传递给SQLServer2005,以便从视图中进行选择 结果集CreateDate列必须介于FromDateDate和ToCreateDate之间。与任何其他参数完全相同。。。当然,这取决于您访问数据的方式,但如果我们假设使用SqlCommand,您只需在TSQL中引用命名参数@fromDate/@toDate,并将命名的SqlParameters添加到命令中,其中.Value=theDate: DateTime en

如何将CreateDate和ToCreateDate中的C DateTime值传递给SQLServer2005,以便从视图中进行选择


结果集CreateDate列必须介于FromDateDate和ToCreateDate之间。

与任何其他参数完全相同。。。当然,这取决于您访问数据的方式,但如果我们假设使用SqlCommand,您只需在TSQL中引用命名参数@fromDate/@toDate,并将命名的SqlParameters添加到命令中,其中.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);

我在示例中使用了一个简单的计数,只是为了保持简单;显然,您也可以从视图等中选择blah…

只需将参数类型设置为SqlDbType.DateTime

e、 g


@马克:我是否必须将两个值作为字符串发送,然后在存储过程中将它们转换为日期时间;只需将DateTime变量设置为parameter.Value。我将添加一个例子…好吧,这是一个比较困惑的情况:我想做一个报告,如果我的用户输入FromCreateDate的日期,那么我将它与createDate列进行比较,如果不是,然后,我将createdate列仅与ToCreateDate值进行比较,即,您需要这样的内容:其中createdate>=@fromDate和@toDate为NULL或createdate
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;