我在处理一个SQL SERVER 2005的数据库中的一个表时,它日期字段储存的值float类型,如:41305.7088194444 ,我在用SQL语句进行转换的时候得出的日期比正确时间多了两天,请问这个是什么原因导致?如何正确的将Float类型的时间转换成datetime类型的时间?
SQL语句:select convert(datetime,41305.7088194444,120),转换后为:2013-02-02 17:00:41.997
Excel转换后正确时间: 1/31/13 5:00 PM

解决方案 »

  1.   

    sql server语句得出日期时间与excel计算得出时间不一样,你要以哪一边为准?如果以Excel为准,那么
    select convert(datetime,41305.7088194444,120)-2/*
    2013-01-31 17:00:41.997
    */
      

  2.   

    两个原因:
    #1.EXCEL中1代表的是1900-01-01,而SQL SERVER转换时用的公式是:1900-01-01 再加 上1,这样,就儿就相差24小时了,那为什么结果会差2天,即48小时呢
    #2.EXCEL计算时,认为1900年的2月份有29天,而SQL SERVER计算时认为1900年2月份只有28天。所以从1900-3-1这一天起,开始计算结果开始相差2天。
    貌似EXCEL有BUG啊。