巧用日期函数

 

润乾报表提供了大量的日期函数用于不同的特殊需求。
但是函数都是常规的用法,针对于某一些特殊的需求,又要如何实现呢?
此时就需要函数间的搭配使用了

常规函数

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())