导入EXCEL 时间数据为小数 问题
2017-04-07 20:36
274 查看
同事在做将EXCEL导入数据库功能时发现一个奇怪的问题:在EXCEL中,有一列数据明明呈现出时间格式,比如:
后来发现,原来EXCEL里面,其实就是小数,只不过,设置单元格格式为时间时,就呈现 时:分 这种友好的样子;当设置为文本时,立刻原形毕露。
怎么办呢?在网上寻寻觅觅,没有头绪。这是一种什么样的时间格式?或者说,这是一种什么样的时间?为什么不是UTC?从1900年以来的,格林威治时间的秒数?
关键是要理清思路。原来,这个小数是 时分 在 一天 中的占比。也就是:
公式的意义不言而喻(同理,如果有秒,就将时间全部换算成秒再计算就行了),细想系统这么处理也是有道理的,时间格式那么多,索性全部换成数字最准确。为啥不是什么UTC之类,因为没有日期,只有时间。
知道了原因就简单了。我们将EXCEL原原本本导入到数据库,呈现的时候,在页面换算一下就行了。换算方法如下:
18:35,但导到数据库中,居然一串长长的小数:
0.7743055555555556,我靠,这是什么鬼。
后来发现,原来EXCEL里面,其实就是小数,只不过,设置单元格格式为时间时,就呈现 时:分 这种友好的样子;当设置为文本时,立刻原形毕露。
怎么办呢?在网上寻寻觅觅,没有头绪。这是一种什么样的时间格式?或者说,这是一种什么样的时间?为什么不是UTC?从1900年以来的,格林威治时间的秒数?
关键是要理清思路。原来,这个小数是 时分 在 一天 中的占比。也就是:
(时 * 60 + 分 ) / 24 * 60
公式的意义不言而喻(同理,如果有秒,就将时间全部换算成秒再计算就行了),细想系统这么处理也是有道理的,时间格式那么多,索性全部换成数字最准确。为啥不是什么UTC之类,因为没有日期,只有时间。
知道了原因就简单了。我们将EXCEL原原本本导入到数据库,呈现的时候,在页面换算一下就行了。换算方法如下:
时 = 小数 *24 取整(不要四舍五入) 分 = (小数 * 24 * 60 )% 60
相关文章推荐
- 导入EXCEL 时间数据为小数 问题
- 如何导入excel数据到数据库,并解决导入时间格式问题
- excel导入数据的时间格式问题
- 数据导入excel时文本数字混合列问题
- Excel数据导入的问题解决
- 细说EXCEL的数据导入问题
- Ado方式导入excel混用数据类型引起数据缺失问题解决方法
- Excel数据导入问题(给数据前面加半角单引号')
- 关于EXCEL数据导入到SQLSERVER中字段存在NULL的问题
- 关于EXCEL数据导入到SQLServer中字段存在NULL的问题
- ASP.NET(C#)Excel导入Dataset的出现数据值丢失问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- 关于Excel数据导入Mysql的问题
- 关于OLEDB导入Excel数据,产生科学计数法问题
- 数据库导入excel数据出现问题解决方案
- dbf转换到excel,改数据后---转txt 然后又foxpro导入为dbf格式,但是有点问题!
- Excel导入DataSet数据丢失问题!
- 关于SSIS从Excel导入数据出现问题,字母加数字,变为NULL
- 关于EXCEL数据导入到SQLServer中字段存在NULL的问题
- C#导入数据到Excel中遇到的问题,已解决