巧用日期时间函数
在做一张考勤表的时候会涉及到很多的日期以及星期几,每个月的天数不一样,每个日期又需要一一的对应星期几。
报表要实现上图所示的样子。思路是:客户输入一个日期参数,根据这个日期在考勤表中列出该月所有的考勤信息。
要判断输入的这个日期所在月有几天,如果我们自己来写表达式计算,会很复杂,首先需要判断年份是闰年还是平年,然后再判断月份,客户的表达式: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(1,daysInMonth(@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 日期或标准日期格式的字符串
返回值:字符型