对于时间条件,我总觉得SQL SERVER 设计不完美
比如以下两个条件,就显示不同
select count(0) from 组成员 where ddate = '2009-3-12'
select count(0) from 组成员 where ddate = '2009-03-12'
本来'2009-3-12' 与'2009-03-12' 是相同的啊, 有没有别的写法,让这两个达到统一呢

解决方案 »

  1.   

    什么意思?ddate字段设为datetime的话,两者的是没有区别的啊
      

  2.   

    select count(0) from 组成员 where CONVERT(VARCHAR(10),ddate,120) = '2009-03-12' 
      

  3.   

    本来就一样,要统一什么?sql 2008增加了Date,Time等数据类型,也许用起来会觉得方便些
      

  4.   

    “时间”族里面的列类型是相通的,他们都可以上下转换。这是sql标准的规定。
    但是你把“时间”转换为字符串或者隐式转换为字符串的话就不行了。
    '2009-3-12' 与'2009-03-12'是完全不同的两个字符串。
    所以把你的列类型由VARCHAR()类型改为“时间”族类型吧。
     
      

  5.   

    如果ddate是datetime型的,则你的两句话是一样的.如果是字符串的,则需要转换.
    select count(1) from 组成员 where isdate(ddate) = 1 and cast(ddate as datetime)= '2009-3-12' 
    select count(1) from 组成员 where isdate(ddate) = 1 and cast(ddate as datetime)= '2009-03-12'