mysql datepart_表达式中datepart函数用法及其与sqlserver depart函数、Mysql week函数的差异...

Wyn Reports支持丰富的函数,这些函数是实现各种计算需求的表达式的基础。

DatePart函数一个日期类函数,返回一个 Integer 值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。如DatePart("m","2017-11-2")返回月份11。

DatePart函数用法:

语法:DatePart(, [, [, ]])

说明:返回一个整型(Integer)值,其中包含给定 Date 值的指定部分(年,月,日,时,分,秒,毫秒,星期几等)。

示例:=DatePart("m", Fields!SaleDate.Value)

例如:

获取今天:2020-09-14 是周一,所在的周数

7d944883010e82db161780da01584c75.gif

image.png592827453.png (7.39 KB, 下载次数: 3)

2020-9-14 15:50 上传

预览结果:

7d944883010e82db161780da01584c75.gif

image.png639807738.png (2.58 KB, 下载次数: 3)

2020-9-14 15:50 上传

返回的星期是:2;

7d944883010e82db161780da01584c75.gif

image.png65741881.png (3.79 KB, 下载次数: 2)

2020-9-14 15:51 上传

7d944883010e82db161780da01584c75.gif

image.png408320311.png (16.31 KB, 下载次数: 0)

2020-9-14 15:51 上传

造成星期不匹配的原因是:DatePart函数和SQL系统默认将星期7作为每周第一天,这个是西方的次序。而我们认为星期1才是每周第一天。

在SqlServer中的查询结果和DatePart函数的结果一致。

7d944883010e82db161780da01584c75.gif

image.png649656982.png (6.97 KB, 下载次数: 3)

2020-9-14 15:52 上传

因此在需要计算正确星期的时候,需要在DatePart函数结果减1,或者在SqlServer中设置 set DATEFIRST 1;

7d944883010e82db161780da01584c75.gif

image.png563340148.png (17.81 KB, 下载次数: 4)

2020-9-14 15:52 上传

而在mysql当中,需要使用week函数来获取日期所在的周。

查询的周数结果为37,和DatePart函数的查询结果差了一周。

7d944883010e82db161780da01584c75.gif

image.png576996154.png (24.69 KB, 下载次数: 0)

2020-9-14 15:52 上传

在Oralce当中,用to_char获取的结果也同样是37周。

7d944883010e82db161780da01584c75.gif

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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值