使用ParallelPeriod注意事项-31日返回空值

         如下面一个语句,查询的是2010-12-31日3个月前的那个日期,系统本应该返回的是2010-09-31,而我们知道9月份只有30没有31日的。结果系统实际最后返回给我们的是一个空值,所以碰到很多网友发现根据日期并用到了这个函数去查询结果时数据总不正确,很可能是这个潜在的问题导致的。

ParallelPeriod([ABM RECORDDATE].[年-半年-季度-月-日].[The Month],3,[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[2010-12-31:00:00])

 

所以我们获取日期的语句可以改成

IIF(
ISEMPTY(ParallelPeriod([ABM RECORDDATE].[年-半年-季度-月-日].[The Month],3,[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[2010-12-31T00:00:00])),
PeriodsToDate([ABM RECORDDATE].[年-半年-季度-月-日].[The Month],[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[2010-12-31T00:00:00]).item(0).parent.lag(2).firstchild.PREVMEMBER,
ParallelPeriod([ABM RECORDDATE].[年-半年-季度-月-日].[The Month],3,[ABM RECORDDATE].[年-半年-季度-月-日].[The Date].&[2010-12-31T00:00:00])
)

像刚才的日期返回为空,我们改成返回2010-09-30,即本月1日(2010-12-01)的前两个月的第一天(2010-10-01)的前一天即2010-09-30

 

基本所有用到ParallelPeriod这个函数的网友都应该注意到这个问题。

我是通过IIF来判断的,网友有更简便更好的办法,可以分享一下。

另外考虑问题时要留意,2月有28日的,后面的29,30,31要找2月的对应日期都找不到的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值