巧用日期时间函数

在做一张考勤表的时候会涉及到很多的日期以及星期几,每个月的天数不一样,每个日期又需要一一的对应星期几。

报表要实现上图所示的样子。思路是:客户输入一个日期参数,根据这个日期在考勤表中列出该月所有的考勤信息。

要判断输入的这个日期所在月有几天,如果我们自己来写表达式计算,会很复杂,首先需要判断年份是闰年还是平年,然后再判断月份,客户的表达式:B3:=case(month(@arg1),1,”31″,2,”29″,3,”31″,4,”30″,5,”31″,6,”30″,7,”31″,8,”31″,9,”30″,10,”31″,11,”30″,12,”31″)。

B4:=if(year(@arg1)%4!=0&&year(@arg1)==2,to(1,int(B3)-1),to(1,int(B3)))

集智提供了一个日期时间函数daysInMonth()。就能取到当月的天数。用集智提供的函数直接写上B4:=to(1daysInMonth(@arg1))就能准确简单的实现上面两行代码的作用。

然后下面一行客户希望对应每个号数一个星期几。再对应出星期几之前需要确定用to扩展出来的号数的确切日期。这里用relDate()monthbegin( )函数就可以实现。

B5表达式为:=relDate(monthbegin(@arg1),B4-1)

下面就根据具体的日期得出对应的星期,一般首先想到的就是把号数除以7取余,然后根据得到的余数用一个map函数来对应的显示出星期几。

而使用集智提供的函数:dayName()就能直接实现。

B6表达式为:=dayName(B5)

这样这张报表的表头部分日期、星期也就扩展好了。

报表设计界面图

预览后的局部图

然后根据日期取出对应的考勤信息就容易得多了。

集智提供的很多函数都能在做报表时帮我很大的忙,这些函数既简单又使用,巧妙的运用这些函数不但可以节省我们做报表的时间,而且能优化报表提高报表的性能。

报表用到的几个日期时间函数介绍:

函数:daysInMonth(dateExp)

说明:获得指定日期所在月的天数

参数说明:dateExp 日期或标准日期格式的字符串

返回值:整数

函数:relDate(dateExp, nExp)

说明:从给定的日期型数据中,算出相差n天后的新的日期数据

参数说明:dateExp 日期或标准日期格式的字符串nExp 整数表达式,需要求得nExp天后的新日期

返回值:整数

函数:monthbegin( dateExp )

说明:取得指定日期所在月的月首

参数说明:dateExp 日期或标准日期格式的字符串

返回值:日期时间

函数:dayName(dateExp)

说明:从日期型数据中获得该日的星期名称

参数说明:dateExp 日期或标准日期格式的字符串

返回值:字符型