1. 内容概述
SQLite数据库中的日期时间字段值存储为一个浮点数,例如:43425.455467963。
其含义为:
- 整数部分为自1899-12-30的天数
- 小数部分为自凌晨0点的天数,0.5即中午12点整
为了便于阅读,我们经常需要将其转换为 yyyy-MM-dd HH:mm:ss 形式。
在系统中,您可以通过以下三种方法进行转换。
2. 通过自定义表实现转换
在数据集中添加自定义表,并采用下面这样的SQL语句,创建自定义数据集:
select strftime('%Y-%m-%d %H:%M:%S','1899-12-30','+' || 原字段名 || ' day') 新字段名 from 表名
例如:select ID, FGC_CreateDate, strftime('%Y-%m-%d %H:%M:%S','1899-12-30','+' || FGC_CreateDate || ' day') 创建日期 from 日结填报
输入SQL查询命令:
基于这样的数据集,即可得到“真正的”日期,如下图:
3. 通过计算字段实现转换
在数据集中还可以通过添加一个计算字段实现转换。
数据集计算字段定义:
DateAdd(s, ([FGC_CreateDate]-Floor([FGC_CreateDate]))*24*60*60, DateAdd(d,Floor([FGC_CreateDate] ),'1899-12-30') )
其中FGC_CreateDate为字段名。
仅勾选FGC_CreateDate字段,然后进行预览,可见已得到正确的日期时间字段。
4. 通过表达式实现转换
对于制作报表来说,除了使用以上两种方法在数据集中实现日期时间转换外,还可以通过使用表达式函数DateAdd实现。
例如,我们使用原始字段制作的表格预览效果如下图,日期列显示为浮点数。
实现分析:
“FGC_Create Date”字段由整数部分和小数部分组成,我们需要转换天数以及时分秒数。
使用 =DateAdd("s", (Fields!FGC_CreateDate.Value-Floor(Fields!FGC_CreateDate.Value))*24*60*60, DateAdd("d",Floor(Fields!FGC_CreateDate.Value ),"1899-12-30") )。
打开表达式编辑器:
输入表达式:
转换后,预览报表可见转换成功。