如何使MySQL的WEE​​K()和YEARWEEK()函数?

时间:2018-03-06 16:28:35

标签: php mysql sql database

我仍然维护一个多年前建立的应用程序,该应用程序具有按周组织的数据日历类型概述。

在我的代码中,MySQL中引用了YEARWEEK()WEEK()函数。

出于某种原因,我会在每年年初收到一封电子邮件,说明日历链接无法正常工作。 (日历链接是根据当年的周数生成的。)

在坚果壳中,我最终将mode参数传递给WEEK()YEARWEEK()函数。所以有一年我将传入1作为第二个参数,第二年,我将传入0。基本上,每年我都被迫以编程方式进行此更改以解决问题,回到1和0之间。

我被迫这样做,因为当日历功能不正常时,所有周都将被1抵消。所以我可能想点击第10周,但我得到的是第11周的数据。

除非有人专门遇到这个问题,否则我不知道某人是否容易为我找到一个好的答案。

1 个答案:

答案 0 :(得分:1)

由于您指的是模式 0和1,我怀疑您可能不知道实际上有八种模式。如果不了解您网站的业务规则,我无法告诉您需要哪个,但MySQL documentation非常明确。

您必须问自己有关业务规则的三个问题:

  • 星期日或星期一是星期几?
    • 模式(0,2,4,6)是星期日开始的几周
    • 模式(1,3,5,7)是从星期一开始的几周
  • 一年中有53或54周的标识符吗?
    • 模式(0,1,4,5)为54周年份格式
    • 模式(2,3,6,7)为53周年份格式
  • 第一周是基于第一个星期日/星期一还是一年中工作日最多的一周?
    • 模式(0,2,5,7)适用于包含一周中第一天的年份
    • 模式(1,3,4,6)是包含一周工作日一半以上的年份

N.B。虽然YEARWEEK()没有记录,但WEEK()模式是相同的

希望这有帮助!