SQL查询比较日期时间时,SQLDependency失败
本文关键字:SQLDependency 失败 时间 查询 比较 日期 SQL | 更新日期: 2023-09-27 18:19:31
我正在为我们的运输部门制定一个监控程序,该程序将显示准备发货的订单。我一直在使用SQLDependency来完成这项工作,并最终使其正常工作,然而,当我试图向查询添加更多细节时,特别是与日期时间列相比,OnChange事件会被反复触发。当我去掉比较时,它非常有效。
我看过微软的文档,但我没有看到任何东西表明这种比较是无效的。
我已将查询简化为:
SELECT [SALESLINE].[SHIPPINGDATEREQUESTED]
FROM [dbo].[SALESLINE]
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] >= '20130614'
有人知道我可能做错了什么,或者用另一种方式与约会进行比较吗?
我可以发布一些代码,但是,正如我所说,如果我的WHERE子句中没有日期时间,它就会起作用。
尝试使用类型化参数:
WHERE [SALESLINE].[SHIPPINGDATEREQUESTED] > @someDateTime
并传入DateTime类型的参数。
您是否正在检查启动OnChange事件的原因?您的查询可能不符合某些要求。如果您的查询本身是罪魁祸首,那么可能是SQLDependency订阅本身是重复触发的原因,在这种情况下,原因应该证实这一点。您可以通过查看事件参数在处理程序中对此进行检查。
从规则上看,没有什么明显的突出之处。所以也许可以试试:
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));
尝试按如下方式创建命令参数。请确保dateVar是DateTime类型的变量,而不是字符串。
cmd.Parameters.Add("@date",SqlDbType.DateTime).Value=dateVar;
我希望这将帮助