Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date crystal reports中从周一开始的最后一周_Date_Crystal Reports_Crystal Reports Xi - Fatal编程技术网

Date crystal reports中从周一开始的最后一周

Date crystal reports中从周一开始的最后一周,date,crystal-reports,crystal-reports-xi,Date,Crystal Reports,Crystal Reports Xi,当使用LastFullWeek时,我得到的是最后一个星期日-星期六,但对于我的报告,我想要的是最后一个星期一-星期日。 有没有简单的方法来获得这种行为,或者我必须为其编写自己的函数(这不是很难,但对于这样一个常见的日期跨度来说并不令人信服。)如果没有更好的答案,代码适用于通过搜索引擎发现此问题的其他人: {DATE} >= currentdate - dayofweek(currentdate, crMonday) - 6 AND {DATE} < currentdate - da

当使用LastFullWeek时,我得到的是最后一个星期日-星期六,但对于我的报告,我想要的是最后一个星期一-星期日。
有没有简单的方法来获得这种行为,或者我必须为其编写自己的函数(这不是很难,但对于这样一个常见的日期跨度来说并不令人信服。)

如果没有更好的答案,代码适用于通过搜索引擎发现此问题的其他人:

{DATE} >= currentdate - dayofweek(currentdate, crMonday) - 6 AND
{DATE} <  currentdate - dayofweek(currentdate, crMonday) + 1
{DATE}>=currentdate-dayofweek(currentdate,crMonday)-6和
{DATE}
如果没有更好的答案,则该代码适用于通过搜索引擎找到此问题的其他人:

{DATE} >= currentdate - dayofweek(currentdate, crMonday) - 6 AND
{DATE} <  currentdate - dayofweek(currentdate, crMonday) + 1
{DATE}>=currentdate-dayofweek(currentdate,crMonday)-6和
{DATE}
自定义功能:

//LastFullWeekEx
Function (DateVar date, Optional NumberVar firstDayOfWeek := crSunday)
  (date - DayOfWeek(date, firstDayOfWeek)) - 6 TO (date - DayOfWeek(date, firstDayOfWeek))
用法:

// use with non-volatile DataDate and Sunday
{TABLE.DATE} IN LastFullWeekEx(DataDate)

// use with non-volatile DataDate and Monday
{TABLE.DATE} IN LastFullWeekEx(DataDate, crMonday)
测试:

// should return True
( Minimum(LastFullWeek) = Minimum(LastFullWeekEx(DataDate, crSunday)) ) AND
( Maximum(LastFullWeek) = Maximum(LastFullWeekEx(DataDate, crSunday)) )
自定义功能:

//LastFullWeekEx
Function (DateVar date, Optional NumberVar firstDayOfWeek := crSunday)
  (date - DayOfWeek(date, firstDayOfWeek)) - 6 TO (date - DayOfWeek(date, firstDayOfWeek))
用法:

// use with non-volatile DataDate and Sunday
{TABLE.DATE} IN LastFullWeekEx(DataDate)

// use with non-volatile DataDate and Monday
{TABLE.DATE} IN LastFullWeekEx(DataDate, crMonday)
测试:

// should return True
( Minimum(LastFullWeek) = Minimum(LastFullWeekEx(DataDate, crSunday)) ) AND
( Maximum(LastFullWeek) = Maximum(LastFullWeekEx(DataDate, crSunday)) )

由于Crystal Reports使用固定周设置(美国),因此您没有其他选择,只能使用自定义公式。因此,一周是星期日到星期六,而DayOfWeek从星期日开始(值/索引1)。

由于Crystal Reports使用固定的周设置(US),您没有其他选择,只能使用自定义公式。因此,一周是星期天到星期六,DayOfWeek从星期天开始(值/索引1)。

而不是使用

上周的{DATE}

使用表格

{DATE}-1在LastFullWeek中

而不是使用

上周的{DATE}

使用表格

{DATE}-1在LastFullWeek中


将+1添加到最近一周的最小值和最大值:

DateVar Start := Minimum(LastFullWeek)+1; //Monday
DateVar End := Maximum(LastFullWeek)+1;   //Sunday
编辑:由于
LastFullWeek
总是将星期日作为一周的第一天,因此我们需要检查当前日期是否为星期日。如果是这样,我们需要减去一周:

// Check if the current day is Sunday
IF (DAYOFWEEK(CurrentDate) = 1)
THEN (
    Start := Start - 7;
    End := End - 7
);

示例:日期范围到字符串

返回示例:“MM/DD/YYYY-MM/DD/YYYY”


示例:选择日期范围内的所有日期


{datefield}>=开始和{datefield}将+1添加到LastFullWeek最小值和最大值:

DateVar Start := Minimum(LastFullWeek)+1; //Monday
DateVar End := Maximum(LastFullWeek)+1;   //Sunday
编辑:由于
LastFullWeek
总是将星期日作为一周的第一天,因此我们需要检查当前日期是否为星期日。如果是这样,我们需要减去一周:

// Check if the current day is Sunday
IF (DAYOFWEEK(CurrentDate) = 1)
THEN (
    Start := Start - 7;
    End := End - 7
);

示例:日期范围到字符串

返回示例:“MM/DD/YYYY-MM/DD/YYYY”


示例:选择日期范围内的所有日期


{datefield}>=Start和{datefield}DayOfWeek可以通过使用
DayOfWeek(date,firstDayOfWeek)
简单地在其他工作日开始一周。我希望上一周的问题也能有类似的解决方案。DayOfWeek可以通过使用
DayOfWeek(date,firstDayOfWeek)
在其他工作日开始一周。我希望上周的问题也能有类似的解决方案。我认为这行不通:如果今天=2020年3月29日星期日,那么最后一周BasedonSunday=3月22日至3月28日,您的解决方案将返回3月23日至3月29日。但最后一周的巴塞尔星期一应该是3月16日至22日March@dougwoodrow你说得对。我已经编辑了我的答案来解决这个问题。我认为这行不通:如果今天=2020年3月29日星期日,那么最后一周BasedonSunday=3月22日至3月28日,您的解决方案将返回3月23日至3月29日。但最后一周的巴塞尔星期一应该是3月16日至22日March@dougwoodrow你说得对。我已编辑了我的答案以解决此问题。这与zachstagrammer给出的解决方案不起作用的原因不同。这与zachstagrammer给出的解决方案不起作用的原因不同。