[英]Converting C# DateTime to T-SQL Time in SelectCommand
我試圖返回一個查詢(在ASP.NET的gridview中),其中WHERE Time> = DateTime.Now.Add(-60)。 WHERE
子句給我帶來了無限的困難。
DateTime pastTime = DateTime.Now.Add(-60);
ds_DB.SelectCommand = "SELECT * FROM [vPurchaseTotals] WHERE [TimeOfTransaction] >= " + pastTime;
我的問題是使pastTime正確轉換,因此它僅返回較新的數據。 [TimeOfTransaction]
是表中的time(7)
數據類型。
如何將C#的DateTime
解析為SQL Server的Time
?
在這里,嘗試一下:
using(SqlConnection conn = new SqlConnection(yourConnectionString))
{
DateTime pastTime = DateTime.Now.Add(-60);
ds_DB.SelectCommand = @"SELECT * FROM [vPurchaseTotals]
WHERE [TimeOfTransaction] >= @PastTime";
SqlCommand cm = conn.CreateCommand();
cm.CommandText = ds_DB.SelectCommand;
cm.Parameters.Add("@PastTime", SqlDbType.Time).Value = pastTime.TimeOfDay; //For comparison with TSQL TIME type
try
{
conn.Open();
// Do what you need to do here.
}
catch(SqlException e)
{
// Handle Exception
}
finally
{
conn.Close();
}
}
僅供以后參考,您應該始終將查詢參數化。 最終,它變得更安全,更清潔/更易於閱讀和調整。
編輯:您正在使用SqlDataAdapter
類嗎? 那是ds_DB的實例嗎? 我個人將只對查詢使用字符串值,然后實現SqlDataAdapter
如下所示:
try
{
conn.Open();
using(SqlDataAdapter da = new SqlDataAdapter(cm))
{
da.Fill(DataTable dt);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.