转至元数据结尾
转至元数据起始

1. 内容概述



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

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


2. 示例一 月末日期



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

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

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

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

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



3. 示例二 SQLite日期转换



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

其含义为:

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

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

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


实现分析:

  • ADate”字段只有整数部分,那我们只需要转换天数即可。使用 =DateAdd("d",Fields!ADate.Value,"1899-12-30") 
  • 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") )。

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

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


  • 无标签