="却可以?" /> ="却可以? - 亿夏网" />

小弟我的SQL中数据库中查一个时间类型字段怎不能用"="操作符,"<="和">="却可以?

我的SQL中数据库中查一个时间类型字段怎不能用"="操作符,"<="和">="却可以??
在我SQL的MyLog数据库中有一个表MyCli,其中有一个字段是dtTime1是时间类型.
我想按这个时间类型,查找一个我想要的数据,比如说我想查dtTime1=2007-02-16   8:16:17的这条数据,我在SQL执行语句,注意-> 其中用的是 "= "操作符:

SELECT   *,   dtTime1
FROM   MyCli
WHERE   (dtTime1   =   CONVERT(DATETIME,   '2007-02-16   08:16:17 ',   102))

但是执行后却查询不出数据来,但是2007-02-16   08:16:17在数据库中明明是有的,我是直接复制下来的,不可能会填错.

但是我把语句改成用 " <= ":
SELECT   *,   dtTime1
FROM   MyCli
WHERE   (dtTime1   <=   CONVERT(DATETIME,   '2007-02-16   08:16:17 ',   102))
这样子却可以了,但是这样却把以前的数据也查出来了,现在问题是我只要的是dtTime1=2007-02-16   08:16:17,到底是什么原因,为什么用 "= "操作符却查不到我所需要的数据,我以前都是这样用的都没问题,这到底是怎么回事呢?我已经把数据库给备份下来了,如果谁愿意帮我看一下的,告诉我邮箱,我把备份的数据库给你发过去.

------解决方案--------------------
dtTime1如果是datatime字段,那么 '2007-02-16 08:16:17 '不一定等于CONVERT(DATETIME, '2007-02-16 08:16:17 ', 102)

因为CONVERT(DATETIME, '2007-02-16 08:16:17 ', 102)= '2007-02-16 08:16:17.000 '
毫秒为000

dtTime1确不一定毫秒等于000,所以严格按照时间来比较,是不一定相等的

要严格判断时间是否想的的话有两种(精确到秒)
1 datediff(ss,dtTime1, '2007-02-16 08:16:17 ')=0
2.CONVERT(VARCHAR, dtTime1, 120)= '2007-02-16 08:16:17 '
------解决方案--------------------
其实直接用dtTime1 = '2007-02-16 08:16:17 '就可以了。我都是这样用的
------解决方案--------------------
楼上正解