日期:2014-05-18  浏览次数:20479 次

极限疑难问题,已经到了吐血的地步,跪求大侠指点
我一个表,用插入时间做了主键,用的是dateTime类型,因为我查的是最近3个月的记录,貌似这样比较快,设了默认字段是getDate(),精确到了毫秒。

我查询的时候取出当前时间前3个月的时间

SET @inTime=DATEADD(m,-3,GETDATE())
但这样始终出现的是 01 1 1900 1:07AM ,这样的类型,这是不行的,因为我是必须要精确到毫秒的,然后我查资料

SET @inTime=CONVERT(VARCHAR(30),DATEADD(m,-3,GETDATE()),9),这样精确到毫秒了,但是这个是字符串类型,和主键的一对比完全不行,我把这个值提取出来

SELECT * FROM Give WHERE toUserId=1 OR toRoomId=1 AND inTime=CONVERT(DATETIME,'04 8 2012 4:06:57:920PM')

出现了N条记录,我这个是主键,为何出现了N条记录,我写> 或者 <记录也一样,真是晕了.

还有convert DATETIME始终出现 01 1 1900 1:07AM ,这样的类型,无法精确到毫秒,怎么回事

------解决方案--------------------
AND级别高,是不是应该先算AND的逻辑,然后再与前面OR结合嘛