PHP 直接使用 date() 即可:

PHP: date - Manual

// after php 4.1.0
$w = date('W'); // 当天
$w1 = date('W', strtotime('2020-07-28')); // 某天

MySQL 某天

WEEK(date_add('2020-07-28',interval 6 day),2);

或者当天

weekofyear(curdate())

经多组日期数据测试,PHP 和 MySQL 计算结果一致,可以放心使用。

跨年周数问题

2019 年 12 月 30 日和 12 月 31 日会计算在 2020 年的第一周里,2020 年的最后一周会加上 2021 年的 1 月 1 日、1 月 2 日、1 月 3 日。这一点说明周数计算并不是从一年的第一天,就是 1 月 1 号开始计算,而是累计的结果。

但这个问题并不影响,在 PHP 和 MySQL 中计算方法应该是一致的,结果也一致,不需要自定义适配函数。