请问为什么这两个结果不同?
我使用PHP执行此操作。
date("YW",mktime(0, 0, 0, 3, 22 , 2013)); // outputs 201312
当我使用MySQL运行这个时
SELECT YEARWEEK(now()); // outputs 201311
请问为什么这两个结果不同?
我使用PHP执行此操作。
date("YW",mktime(0, 0, 0, 3, 22 , 2013)); // outputs 201312
当我使用MySQL运行这个时
SELECT YEARWEEK(now()); // outputs 201311
您需要在mysql的YEARWEEK调用中指定模式3:
SELECT YEARWEEK(now(),3);
PHP的date()
占位符W
根据ISO 8601规范返回周数。这意味着一周始于星期一(而不是星期日),一年的第一周是第1周(而不是第0周),并且该周是新年后半数天数最多的那个星期(所以必须在星期四之前是1月份)。根据MySQL WEEK函数的文档,选项的组合模式为3。
另外,要将Alles的注释包含在接受的答案中,因为它很重要:占位符Y
和W
不能在一起使用。如果您想要与ISO周数相关联的年份,则应使用o
而不是Y
.例如,考虑从2014年12月29日星期一开始的一周:
date('YW', mktime(0,0,0,12,29,2014)); #=> 201401 : 1st week of 2014??
date('oW', mktime(0,0,0,12,29,2014)); #=> 201501 : better
date("oW",mktime(0, 0, 0, 1, 1, 2012)); // outputs 201152
"o" 可以告诉你这一周属于哪一年。
希望对您有所帮助。
date
函数没有内置支持。你需要自己进行计算。 - Mark Reed