大家好:在sql中,存的浮点时间和日期  比如38733.58621528,请问怎么转换成2006年这种,不用sql的convert函数,谢谢!!

解决方案 »

  1.   

    select 
        日期=cast(38733.58621528 as datetime), 
        年份=year(38733.58621528), 
        月份=month(38733.58621528), 
        日=day(38733.58621528)
      

  2.   

    如果确实是sql server中, 楼上的显然是错误的, 你在查询分析器中执行下面的语句就可以验证了.select cast(cast('1899-12-30' as datetime) as float)
    --结果 -2.0
      

  3.   

    以1899年12月30日0点为坐标原点----------------
    那么过了12后就不是1899年了,而是1900年了,也就是1899年12月30日0点,其实就是1900年01月01日0点所以
    不是
    select cast(cast('1899-12-30' as datetime) as float)
    而是
    select cast(cast('1900-01-01' as datetime) as float)这个浮点数以1899年12月30日0点为坐标原点,整数部分表示相差的天数,小数部分表示相差不足一天的部分
    说法并没有错,只是在sql中执行的时候不应该再是1899而是1900
      

  4.   

    而且是31日,而不是30日
    select cast(cast('1899-12-31' as datetime) as float)
    是0点的前一天,结果是-1
    select cast(cast('1900-01-01' as datetime) as float)
    是0点后,结果是0
    这是没有问题的
    只是放在sql执行的内容不对