[]
Wyn报表表达式提供DateAdd函数来计算日期加减时间间隔后的新日期。
语法: DateAdd(<时间单位>, <增减数值>, <日期时间表达式>)
说明: 返回一个日期值增减一个指定单位时间间隔的结果。如DataAdd("d",-1,"2017-1-1")表示在2017-1-1基础上增加-1天,返回值为"2016-12-31"
示例: {DateAdd("d", 5, SaleDate)}; {DateAdd(DateInterval.Day, 5, SaleDate)}
以下分别为您介绍如何使用 DateAdd 函数获取月末日期以及进行 SQLite 日期转换。
报表应用中经常需要制作月报,月报就需要取到整个月的数据,即从月初第一天到月末最后一天的所有业务数据。而数据库中的日期往往带有具体时间,这就容易造成最后一天的数据遗漏。为了避免这种情况的发生,我们采用'次月首日减1天'的算法精准获取当月截止日期,有效规避时间戳导致的边界数据遗漏问题。下面以今天为例,看一下具体的实现方法:
在报表设计器中,使用文本框,编写表达式,如下图,“ 次月首日 ”: {DateAdd("M", 1, DateSerial(Year(Today()), Month(Today()), 1))}。

在使用新的新的文本框,编写表达式,如下图,用“ 次月首日 ”减一天得到我们需要的“ 月末日期 ”: {DateAdd("d", -1, DateAdd("M", 1, DateSerial(Year(Today()), Month(Today()), 1)))}。

预览查看效果:

SQLite数据库中的日期时间字段值存储为一个浮点数,例如:43425.455467963。
其含义为:
整数部分为自1899-12-30的天数
小数部分为自凌晨0点的天数,0.5即中午12点整
为了便于阅读,我们可以使用表达式将其显转换为 yyyy-MM-dd HH:mm:ss 形式。我们以下图中的SQLite字段值为例,介绍如何进行SQLite日期字段值的转换。

实现分析:
“ADate”字段只有整数部分,那我们只需要转换天数即可。使用 {DateAdd("d",ADate,"1899-12-30") }。
“FGC_Create Date”字段由整数部分和小数部分组成,我们需要转换天数以及时分秒数。使用{DateAdd("s", (FGC_CreateDate-Floor(FGC_CreateDate))*24*60*60, DateAdd("d",Floor(FGC_CreateDate),"1899-12-30") )}。
实际应用中,您可以参考套用以上两个表达式。使用这两个表达式进行转换后,效果如下。
