1.概述
od函数用于提供日期操作功能的函数,它对日期进行指定格式的处理后,返回结果为日期字符串。
od函数多用于内存计算。报表中可以写表达式的地方都能使用od函数,如表元表达式中、过滤条件中、显示表达式、宏表达式中,行高列宽中,“显示”属性中等。
在公式定义向导的函数列表中有od函数的使用说明,可以查看。此文档我们会结合示例对od函数做详细讲解,以便大家更好的掌握此函数。
2.函数说明
2.1格式
od(s1,s2)
2.2参数
第一个参数s1,是字符型或日期型。
- 如果是字符型,则参数为字符串格式的日期信息,如2006、200601、20060102等。
- 如果是日期型,则参数为日期类型的日期格式,如#2006#、#200601#、#20060102#等。
第二个参数s2,是字符串格式的操作信息,表明怎样对第一个参数进行操作。-为减操作,+为加操作,=为设置操作。如:
- m-1表示在第一个参数表示的日期中的月份上减1月;
- m+1表明在第一个参数表示的日期中的月份上加1月;
- m=1表示设置月份为1月;
- lastday为取最后一天(仅对年月日形式的有效)。
2.3常用写法
操作类型 | 字符型 | 日期型 | ||
输入 | 输出 | 输入 | 输出 | |
年 | od('2006','y=2005') | 2005 | od(#20060101#,'y=2005') | 2005-01-01 |
od('200607','y+1') | 200707 | od(#20060101#,'y+1') | 2007-01-01 | |
od('20060701','y-1') | 20050701 | od(#20060101#,'y-1') | 2005-01-01 | |
半年 | od('20061','hy=2') | 20062 |
|
|
od('20061','hy+2') | 20071 |
|
| |
od('20061','hy-1') | 20052 |
|
| |
季度 | od('20061','q=2') | 20062 |
|
|
od('20061','q+5') | 20072 |
|
| |
od('20061','q-3) | 20052 |
|
| |
月 | od('200601','m=5') | 200605 | od(#20060101#,'m=5') | 2006-05-01 |
od('20050131','m+1') | 20050228 | od(#20060101#,'m+1') | 2006-02-01 | |
od('20070331','m-1') | 20070228 | od(#20060101#,'m-1') | 2005-12-01 | |
旬 | od('2006011','t=2') | 2006012 |
|
|
od('2006011','t+3') | 2006021 |
|
| |
od('2006011','t-3') | 2005121 |
|
| |
日 | od('20060101','d=2') | 20060102 | od(#20060101#,'d=2') | 2006-01-02 |
od('20060131','d+1') | 20060201 | od(#20060131#,'d+1') | 2006-02-01 | |
od('20060201','d-1') | 20060131 | od(#20060101#,'d-1') | 2005-12-31 | |
od('20020201','d=lastday') | 20020229 | od(#20060201#,'d=lastday') | 2006-02-28 | |
多操作符 | od('20020201','m=1;d=lastday') | 20020131 | od(#20060101#,'m=2,d=lastday') | 2006-02-28 |
3.示例
在之前章节浮动分析表制作中,我们制作了一张月度考勤表。
现我们需要在“请假天数”后面增加一列“上月请假天数”,并且支持用户能够自己选择需要查看的月份。
Step1:设置数据期条件
需求是求本月考勤数据及上月请假天数,则首先设置浮动维表元的数据期条件获取本月考勤数据,数据期条件表达式为left(fact_grzb.RQ,6)=@sjq
Step2:使用od函数获取上月数据
添加“上月请假天数”列,并勾选【指标】属性,设置表元数据期条件为left(fact_grzb.RQ,6)=od(@sjq,'m-1')
计算效果如下:
生成sql如下:
如果是求去年同期请假天数,则设置数据期条件为left(fact_grzb.RQ,6)=od(@sjq,'y-1'),生成sql如下所示: |
请先登录