[]
        
(Showing Draft Content)

SQLite日期时间字段转换

内容概述

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 日结填报

image2019-9-19_15-4-53.png


输入SQL查询命令:

image2019-9-19_15-5-44.png


基于这样的数据集,即可得到“真正的”日期,如下图:

image2019-9-19_15-7-52.png

通过计算字段实现转换

在数据集中还可以通过添加一个计算字段实现转换。

image2019-9-19_15-10-1.png


数据集计算字段定义:

DateAdd(s, ([FGC_CreateDate]-Floor([FGC_CreateDate]))*24*60*60, DateAdd(d,Floor([FGC_CreateDate] ),'1899-12-30') )

其中FGC_CreateDate为字段名。

image2019-9-19_15-11-27.png


仅勾选FGC_CreateDate字段,然后进行预览,可见已得到正确的日期时间字段。

image2019-9-19_15-13-0.png

通过表达式实现转换

对于制作报表来说,除了使用以上两种方法在数据集中实现日期时间转换外,还可以通过使用表达式函数DateAdd实现。

例如,我们使用原始字段制作的表格预览效果如下图,日期列显示为浮点数。

image2019-9-19_15-17-19.png

实现分析:

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")

打开表达式编辑器:

image2019-9-19_15-18-1.png

输入表达式:

image2019-9-19_15-20-4.png

转换后,预览报表可见转换成功。

image2019-9-19_15-20-48.png