获取Crystal Reports上一季度的开始和结束日期

时间:2014-07-10 22:22:07

标签: datetime crystal-reports crystal-reports-xi

像许多人一样(但不是我能找到的Crystal Reports),我正在寻找如何获得上一季度的开始和结束日期。

今天是2014年7月10日,我可以使用

DateAdd("Q", -1, CurrentDate)

并返回4/10/2104 12:00:00 AM

我想要的是上一季度的开始和结束日期。今天,那将是2014年4月1日和2014年6月30日。在十月,它应该返回2014年7月1日和2014年9月30日。我只想要日期部分,而不是时间。

我正在查看水晶日期和时间和日期范围选项,只是没有看到我需要做什么。

2 个答案:

答案 0 :(得分:3)

要获得本季度的第一个日期,以下内容将起作用:

dateVar PrevQuarterDate := Date(DateAdd("Q", -1, CurrentDate));
dateVar PrevQuarterStart := Date(Year(PrevQuarterDate),Month(PrevQuarterDate),1);
PrevQuarterStart;

最后的日期类似:

dateVar PrevQuarterDate := Date(DateAdd("Q", -1, CurrentDate));
dateVar PrevQuarterEnd := Date(Year(PrevQuarterDate),Month(PrevQuarterDate)+3,1)-1;
PrevQuarterEnd;

如果上一季度也是前一年的话,事实证明以上 NOT 工作。以下是更好的。有足够的代码可以放入您自己的日期并显示结果,因此也可以进行检查。

dateVar ToDaysDate := CurrentDate; //  Date(2014,02,11);
dateVar PrevQDtDate := Date(DateAdd("Q", -1, ToDaysDate));
dateVar PrevQStart := dateserial(year(PrevQDtDate),(datepart("q",DateAdd ("q", -1, ToDaysDate))*3)-2, 1);
DateVar PrevQEnd := dateserial(year(ToDaysDate),datepart('q',ToDaysDate)*3-2,1-1);
StringVar DispDates;
DispDates := totext(PrevQStart) + "-" + totext(PrevQEnd);
DispDates;

答案 1 :(得分:-1)

上一季度的第一个日期:

dateVar     myDate  := currentDate; 
numberVar   myMonth := Month(dateadd("q", -1, myDate));
numberVar   myYear  := Year(dateadd("q", -1, myDate));

myMonth := myMonth - ((myMonth + 2) MOD 3);

date(myYear, myMonth, 1);

过去一个季度的最后日期:

dateVar     myDate := currentDate;
numberVar   myMonth := Month(myDate);
numberVar   myYear  := Year(myDate);

myMonth := myMonth - ((myMonth + 2) MOD 3);

date(dateadd("d", -1, date(myYear, myMonth, 1)));