日期:2014-05-17  浏览次数:20526 次

什么方式比较日期是否相等比较可靠
select * from tt where rq=@rq

数据库中rq是date格式,格式为yyyy-MM-dd
传递的参数格式有可能为yyyy/M/d、yyyy-M-d等格式,
getCmd.Parameters.Add("@rq", SqlDbType.Date).Value = rq;

我执行的时候发现传入同样的日期,有的能读出来,有的读不出来;
用什么方式能适应各种情况?

------解决方案--------------------
select * from tt where rq=convert(char(8),@rq,120)

------解决方案--------------------
 set @rq = convert(nvarchar(10),@rq,23)---在sql语句前面加一句 。不管你传什么参数,执行sql的时候都转成统一的参数格式。
select * from tt where rq=@rq
------解决方案--------------------
确保对比的数据数据类型是一致的,然后尽量不要转换数据类型,特别是日期型转成字符型,精度不准确。