数据库中Table表的Time字段为可为空的Datetime格式.当从数据库中查出该表到一个DateSet里.空的数值全部转化为"0001-01-01 08:00:00"关键的问题是,这种情况只在客户那边出现了.在公司的环境下,DateSet里的该字段仍然为"Null".

解决方案 »

  1.   

    用case when吧
    Time=case when Time ='' then '1973-01-01' when Time <>'' then Time end
      

  2.   

    是Null.不是''...关键是不同的机器有不同的结果...我觉得应该是系统设置里的问题吧.
      

  3.   

    0001-01-01 08:00:00?是 0001-01-01 00:00:00 吧...8点怎么出来的?这是 DateTime.MinValue 不是 null...值类型不可为 null...只有可为空泛型类型才可以赋空值...注意 2.0 以上才支持...如...Nullable<DateTime> d = null;orDateTime? d = null;
      

  4.   

    楼上的意思我明白...
    在程序里,对应的内容是DataTime?可问题不在这里,WebService程序,从数据库里直接得到了个DataSet.
    然后再传到客户端...这个期间,没有做任何操作.
    当我从客户端读取DataSet里的字段的时候用了
    DataSet.Select("Time IS NOT NULL")的过滤,结果呢,是所有行全出来了...相应的字段用.ToString()一显示,均为"0001-01-01 08:00:00"了...可同样的程序,在部门里,就可以用DataSet.Select("Time IS NOT NULL")进行过滤
      

  5.   

    让我最搞不定的不是因为我的Null被转化成了0001-01-01 08:00:00
    如果说,C#就这个特点.咱也没办法,认了就是了.关键是同样的程序,同样的系统,在不同的机器上运行出来了不同的结果.我们公司做的还是急救系统...弄不好是要出人命的.
      

  6.   

    WebService会将DataSet中的值转化成为.NET的类型再发送。转化过程中,就会出现空值被转化为“最小值”(如果该类型不可为空)。你可试试看使用"Time>"+DateTime.MinValue.ToString()来选择需要的数值。
      

  7.   

    而且我对"08:00:00"也真的很不理解....数据库是SQL2005
      

  8.   

    而且我对"08:00:00"也真的很不理解....数据库是SQL2005===========================时间最小为格林尼治时间0年0月0日 0分0时0秒。我们在东8区,转换成我们的时间需要加上8小时,所以就变成了8:00:00