如何將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