试一试
SELECT *
FROM userinfo
WHERE (CONVERT(char(10), user_date, 120)= CONVERT(char(10), user_bday, 120))

解决方案 »

  1.   

    说明你这两个字段的值并不相等,如果真的相等,不需要进行转换,直接判断是否相等就行了,如果比较两个日期的差别,使用
    DATEDIFF ( datepart , startdate , enddate ) 更好,象你的条件可以写成:
    WHERE DATEDIFF ( second,user_date, user_bday)=0
      

  2.   

    SELECT *
    FROM userinfo
    WHERE (CONVERT(char(10), user_date, 111)= CONVERT(char(10), user_bday, 111))
      

  3.   

    在查询分析器中执行下面的代码
    select CONVERT ( varchar(19), getdate() , 120 )
    结果集是:2003-01-26 12:31:59
    你要查询的结果是,在你的表userinfo中,user_date和user_bday字段相等的记录,也就是说,二个时间的年月日时分秒都相等的记录.
    你可以先到你的表中看一看是否有这样的相等记录?
      

  4.   

    如果是查当天的:
    SELECT *
    FROM userinfo
    WHERE (CONVERT(varchar(10), user_date, 120)= CONVERT(varchar(10), user_bday, 120))
      

  5.   

    select CONVERT(char(19), user_date, 120) as DateTime1, CONVERT(char(19), user_bday, 120) as DateTime2 from userinfo检索出来的值相等吗?
    不等的话,将结果拷贝上来,大家看看,应该没什么问题的啊。
      

  6.   

    如果精确到秒的查找:
    SELECT *
    FROM userinfo
    WHERE (CONVERT(varchar(19), user_date, 120)= CONVERT(varchar(19), user_bday, 120))
      

  7.   

    楼主只要将我给你的那段运行,查看结果,然后阐述清楚你的要求,我相信问题应该是很快能得到解决的。看到大力兄在,请教下:
    http://expert.csdn.net/Expert/topic/1393/1393178.xml?temp=.4643671
    是一个概念问题:there is an N before the start of the string, which indicates that the data following the N is Unicode data.
    理解不是很清楚,看看好吗?
      

  8.   

    感谢各位仁兄,昨天因为网络瘫痪,上不来,感谢大家的回复,我试试To:glboy(星毅) 
        我的代码和你的一样,就是没有查询到我才很奇怪
      

  9.   

    To:glboy(星毅)
      用你的代码试了(如下),select CONVERT(char(19), user_date, 120) as DateTime1, CONVERT(char(19), user_bday, 120) as DateTime2 from userinfo试过之后发现在SQLserver企业管理器里面返回所有行中看到的user_data字段的值是2003-01-25 11:47:30,但是通过上面的语句中显示的确是2003-01-25 11:47:29,这是怎么回事?
      

  10.   

    试过之后发现在SQLserver企业管理器里面返回所有行中看到的user_data字段的值是2003-01-25 11:47:30,但是通过上面的语句中显示的确是2003-01-25 11:47:29,这是怎么回事?一个是四舍五入,一个是截断,所以不同
      

  11.   

    一般情况截断就可以了,如果一定要四舍五入(比如对毫秒)可以用case语句来做,不过应该没必要,截断和四舍五入精度是一样的