cast()和convert()到底有什么区别?为什么要设置两个类型转换函数?我在日期类型转换时候,如果遇到了一个日期型变量是datetime型的,正好这个变量是NULL,为什么从convert函数转换成字符传是1900 01 01 00:00:000,好郁闷啊,有没有办法让直接显示为空!
print convert(isnull(@hirm_time,''),char(30))

解决方案 »

  1.   

    其实楼主应该查询一下SQLSERVER 的联机帮助,里面很详细的!
      

  2.   

    convert()带转换的格式,cast()不带格式。对于NULL值可以用case when ... end判断一下。
      

  3.   

    帮助里面选Transact-SQL帮助,然后搜索CONVERT
      

  4.   

    LZ 的问题貌似小楼同学已经跟你解决了刚才仔细看看了发生是LZ的写法有问题才会这样时间类型如果为空字符串值,则会认为是datetime类型的默认值,也就是1900年1月1号,
    如果要给自己给默认值要在转换完了以后再用isnull判断,就像小楼同学回复的帖子那样convert()是可以格式化的,不信LZ试试看declare @datetime datetime
    set @datetime = getDate()
    print convert(char(8),@datetime,112) + replace(convert(char(8),@datetime,114),':','')
    print cast(@datetime as char(19))
      

  5.   

    谢谢高升兄,不知道是我问的不够清楚还是怎么回事,你说了那些其实都不是我想要的,不过我要感谢你,经过你的提示,我终于达到了目的,其实下面就是我想要的效果:declare @datetime datetime
    set @datetime =NULL
    --print  convert(char(18),@datetime,120)
    print  replace(convert(char(18),isnull(@datetime,''),120),'1900-01-01 00:00:0','暂无')显示:暂无