[]
        
(Showing Draft Content)

DateAdd函数示例-获取月末日期_SQLite日期转换

DateAdd 函数返回一个 Date 值,其中包含添加指定时间间隔的日期和时间值。如DataAdd("d",-1,"2017-1-1")返回值为"2016-12-31"。

以下分别为您介绍如何使用 DateAdd 函数获取月末日期以及进行 SQLite 日期转换。

示例一 月末日期

报表应用中经常需要制作月报,月报就需要取到整个月的数据,即从月初第一天到月末最后一天的所有业务数据。而数据库中的日期往往带有具体时间,这就容易造成最后一天的数据遗漏。

为了避免这种情况的发生,我们经常需要用次月的首日减一天来得到当月的月末日期。

我们以今天为例,看一下具体的实现方法:

首先得到“ 次月首日 ”: {DateAdd("M", 1, DateSerial(Year(Today()), Month(Today()), 1))}

然后用“ 次月首日 ”减一天得到我们需要的“ 月末日期 ”: {DateAdd("d", -1, DateAdd("M", 1, DateSerial(Year(Today()), Month(Today()), 1)))}

image2020-10-13_11-7-31.png

image2020-10-13_11-8-32.png

示例二 SQLite日期转换

SQLite数据库中的日期时间字段值存储为一个浮点数,例如:43425.455467963。

其含义为:

  • 整数部分为自1899-12-30的天数

  • 小数部分为自凌晨0点的天数,0.5即中午12点整

为了便于阅读,我们可以使用表达式将其显转换为 yyyy-MM-dd HH:mm:ss 形式。

我们以下图中的SQLite字段值为例,介绍如何进行SQLite日期字段值的转换。

image2019-5-16_11-47-7.png

实现分析:

  • 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") )}。

实际应用中,您可以参考套用以上两个表达式。

使用这两个表达式进行转换后,效果如下。

image2019-5-16_11-58-10.png