[]
SQLite数据库中的日期时间字段值存储为一个浮点数,例如:43425.455467963。
其含义为:
整数部分为自1899-12-30的天数
小数部分为自凌晨0点的天数,0.5即中午12点整
为了便于阅读,我们经常需要将其转换为 yyyy-MM-dd HH:mm:ss 形式。
在系统中,您可以通过以下三种方法进行转换。
在数据集中添加自定义表,并采用下面这样的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查询命令:
基于这样的数据集,即可得到“真正的”日期,如下图:
在数据集中还可以通过添加一个计算字段实现转换。
数据集计算字段定义:
DateAdd(s, ([FGC_CreateDate]-Floor([FGC_CreateDate]))*24*60*60, DateAdd(d,Floor([FGC_CreateDate] ),'1899-12-30') )
其中FGC_CreateDate为字段名。
仅勾选FGC_CreateDate字段,然后进行预览,可见已得到正确的日期时间字段。
对于制作报表来说,除了使用以上两种方法在数据集中实现日期时间转换外,还可以通过使用表达式函数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") )。
type=info
提示
如果需转换的字段只有整数部分,那我们只需要转换天数即可。使用=DateAdd("d",Fields!ADate.Value,"1899-12-30")。
打开表达式编辑器:
输入表达式:
转换后,预览报表可见转换成功。