SQL查询比较Datetime时SQLDependency失败

时间:2013-06-21 20:15:45

标签: c# sql-server sqldependency

我正在为我们的运输部门制定监控程序,该程序将显示准备发货的订单。我一直在使用SQLDependency来完成这项工作并最终使其正常运行,但是,当我尝试为查询添加更多细节时,特别是与datetime列相比,OnChange事件会被重复触发。当我删除比较时,它完美地运作。

我经历过Microsoft's documentation,但我没有看到任何说这种比较无效的事情。

我已将查询简化为:

SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= '20130614'

有谁知道我可能做错了什么或用其他方式来比较日期?

我可以发布我的一些代码,但是,正如我所说,如果我的WHERE子句中没有日期时间,它就可以正常工作。

3 个答案:

答案 0 :(得分:4)

尝试使用输入的参数:

WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] > @someDateTime

并传入DateTime类型的参数。

答案 1 :(得分:0)

您是否正在检查OnChange事件被触发的原因?您的查询可能不符合某些requirements。如果您的查询本身是责任,可能是SQLDependency订阅本身是重复触发的原因,在这种情况下,原因应该确认这一点。您可以通过查看eventargs

在处理程序中进行检查

阅读规则,没有什么显而易见的。所以也许试试:

using(SqlCommand cmd = new SqlCommand("SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= @d", conn)){
DateTime myDate = DateTime.Now;
cmd.Parameters.Add(new SqlParameter("@d", myDate));

答案 2 :(得分:0)

尝试按如下方式创建命令参数。 确保dateVar是DateTime类型变量而不是字符串。

cmd.Parameters.Add(" @ date",SqlDbType.DateTime).Value = dateVar;

我希望这能帮到某人