Wyn Reports支持丰富的函数,这些函数是实现各种计算需求的表达式的基础。
DatePart函数一个日期类函数,返回一个 Integer 值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。如DatePart("m","2017-11-2")返回月份11。
DatePart函数用法:
语法:DatePart(, [, [, ]])
说明:返回一个整型(Integer)值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。
示例:=DatePart("m", Fields!SaleDate.Value)
例如:
获取今天:2020-09-14 是周一,所在的周数
image.png592827453.png (7.39 KB, 下载次数: 3)
2020-9-14 15:50 上传
预览结果:
image.png639807738.png (2.58 KB, 下载次数: 3)
2020-9-14 15:50 上传
返回的星期是:2;
image.png65741881.png (3.79 KB, 下载次数: 2)
2020-9-14 15:51 上传
image.png408320311.png (16.31 KB, 下载次数: 0)
2020-9-14 15:51 上传
造成星期不匹配的原因是:DatePart函数和SQL系统默认将星期7作为每周第一天,这个是西方的次序。而我们认为星期1才是每周第一天。
在SqlServer中的查询结果和DatePart函数的结果一致。
image.png649656982.png (6.97 KB, 下载次数: 3)
2020-9-14 15:52 上传
因此在需要计算正确星期的时候,需要在DatePart函数结果减1,或者在SqlServer中设置 set DATEFIRST 1;
image.png563340148.png (17.81 KB, 下载次数: 4)
2020-9-14 15:52 上传
而在mysql当中,需要使用week函数来获取日期所在的周。
查询的周数结果为37,和DatePart函数的查询结果差了一周。
image.png576996154.png (24.69 KB, 下载次数: 0)
2020-9-14 15:52 上传
在Oralce当中,用to_char获取的结果也同样是37周。
image.png478624572.png (10.86 KB, 下载次数: 0)
2020-9-14 15:53 上传
以Mysql为例,通常,一年的正常年份为365天,闰年为366天。一年又可以分为许多周,每周有7天。 所以一年,我们经常有365/7 = 52周,周范围是从1到52。
要查看给定日期属于哪个周数,您可以使用WEEK函数,如下所示:
WEEK(date, mode);
WEEK函数接受两个参数:
date是要获取周数的日期。
mode是一个可选参数,用于确定周数计算的逻辑。它允许您指定本周是从星期一还是星期日开始,返回的周数应在0到52之间或0到53之间。
如果忽略mode参数,默认情况下WEEK函数将使用default_week_format系统变量的值。
要获取default_week_format变量的当前值,请使用SHOW VARIABLES语句如下:
1.mysql>SHOWVARIABLESLIKE'default_week_format';
2.+---------------------+-------+
3.| Variable_name | Value |
4.+---------------------+-------+
5.| default_week_format | 0 |
6.+---------------------+-------+
7.1 row inset
在我们的服务器中,default_week_format的默认值为0,下表格说明了mode参数如何影响WEEK函数:
模式一周的第一天范围
0星期日0-53
1星期一0-53
2星期日1-53
3星期一1-53
4星期日0-53
5星期一0-53
6星期日1-53
7星期一1-53