我仍然在维护一个我多年前构建的应用程序,它有一个日历类型的数据概览,按周组织。
在我的代码中,有对mysql中YEARWEEK()WEEK()函数的引用。
出于某种原因,我会在每年年初收到一封电子邮件,说明日历链接工作不正常。(日历链接是根据当年的周数生成的。)
在坚果壳中,我最终将mode参数传递给WEEK()YEARWEEK()函数。所以有一年我会把1作为第二个参数,下一年,我会把0作为参数。基本上,每年我都被迫用编程的方法来修改这个问题,回到1到0之间。
我不得不这么做,因为当日历不能正常工作时,所有的周都会被1抵消。所以我可能想点击第10周,但我得到了第11周的数据。
除非有人特别遇到这个问题,否则我不知道是否有人会那么容易为我想出一个好的答案。

最佳答案

既然你指的是模式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)适用于包含一周工作日一半以上的年份
注意:尽管没有记录YEARWEEK(),但WEEK()模式是相同的
希望这有帮助!

关于php - 如何制作MySQL的WEE​​K()和YEARWEEK()函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49135641/

10-09 19:33