巧用日期函数
润乾报表提供了大量的日期函数用于不同的特殊需求。
但是函数都是常规的用法,针对于某一些特殊的需求,又要如何实现呢?
此时就需要函数间的搭配使用了
常规函数
now()
获得系统此刻的日期时间,精确到毫秒
语法:
now()
返回值:
日期时间
选项:
@d 只返回日期部分,日期类型
@t 只返回时间部分,时间类型
@m 精确到分
@s 精确到秒
常用到的是 now@d() 获取当前日期
类似的有
date() time() datetime()
一个是获取日期部分 一个是获取时间部分 一个是获取日期时间
获取指定日期的 年 月 日 时 分 秒 毫秒
对应的函数分别是
year() month() day() hour() minute() second() millisecond()
特殊需求
获取前一天的日期
需要用到的函数是 elapse() 和 now 的结合使用
函数说明:
计算相差某个时间的新日期数据
语法:
elapse (dateExp, n)
参数说明:
dateExp 给定的起始日期表达式,其结果必须为日期或标准日期格式的字符串
n 整数表达式,需要求得相差n天/年/月的新日期,负数表示n天/年/月前的新日期
备注:
算出相差n天/ n月/ n年的新的日期数据dateExp
取得指定日期在去年的同月同日,若无同月同日,则返回去年同月最后一天
返回值:
日期时间
选项:
@y 计算与指定日期相差n年的新日期数据
@q 计算与指定日期相差n季度的新日期数据
@m 计算与指定日期相差n月的新日期数据
@e 指定日期是月底时计算后的新日期数据不调整为月底,缺省将把新日期数据调整成月底,与@yqm配合使用
@s 计算与指定日期相差n秒的新的日期时间数据
@ms 计算与指定日期相差n毫秒的新的日期时间数据
无选项缺省时表示算出给定日期n天后的新日期数据
具体写法为:
前一天:elapse(now@d(),-1)
上月今天:elapse@m(now@d(),-1)
去年今天:elapse@y(now@d(),-1)
获取当月月末
需要用到的函数是 pdate() 和 now 的结合使用
函数说明:
获得指定日期所在星期/月/季度的最早的一天和最后的一天
语法:
pdate(dateExp)
参数说明:
dateExp 返回值为日期或标准日期格式的表达式
返回值:
日期时间型
选项:
@w 获得指定日期所在星期的星期天
@we 获得指定日期所在星期的星期六
@m 取得指定日期所在月的月首
@me 取得指定日期所在月的月末
@q 取得指定日期所在季度的首日
@qe 取得指定日期所在季度的末日
缺省为获得指定日期所在星期的星期天
@y 获取指定日期所在年的第一天
具体写法为:
本月月末:pdate@me(now@d())
上月月末:pdate@me(elapse@m(now@d(),-1))
今年年初:pdate@y(now@d())