Wyn Reports支持丰富的函数,这些函数是实现各种计算需求的表达式的基础。
DatePart函数一个日期类函数,返回一个 Integer 值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。如DatePart("m","2017-11-2")返回月份11。
DatePart函数用法:
语法: | DatePart(<时间单位>, <日期时间值>[, <一周的第一天>[, <一年的第一周>]]) |
说明: | 返回一个整型(Integer)值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。 |
示例: | =DatePart("m", Fields!SaleDate.Value) |
例如:
获取今天:2020-09-14 是周一,所在的周数
预览结果:
返回的星期是:2;
造成星期不匹配的原因是:DatePart函数和SQL系统默认将星期7作为每周第一天,这个是西方的次序。而我们认为星期1才是每周第一天。
在SqlServer中的查询结果和DatePart函数的结果一致。
而在mysql当中,需要使用week函数来获取日期所在的周。
查询的周数结果为37,和DatePart函数的查询结果差了一周。
以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> SHOW VARIABLES LIKE 'default_week_format';
2.+---------------------+-------+
3.| Variable_name | Value |
4.+---------------------+-------+
5.| default_week_format | 0 |
6.+---------------------+-------+
7.1 row in set
在数据库服务器中,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 |