我尝试返回查询(在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
?
答案 0 :(得分:1)
在这里,试试这个:
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);
}
}