SQL 函数Select WEEK(mydate) ...
返回的周数与 PHP 函数不同的周数date('W',strtotime($mydate))
其中$mydate
是格式(Y-m-d h:i:s)
通过选择 SQL 数据库上的mydate
变量获得的字符串。
这只是一周的差异数,但由于 0 和 52 的边缘情况,我无法减去,它们在那里混淆了。
我知道WEEK(mydate,3)
会使它们相等,但我无法更改 SQL 语句,我需要在 PHP 计算中更改它。
如何更改函数日期('W',strtotime($data((,以便它给我一个等于 SQL 的一周?
提前谢谢。
- 您无法更改 PHP 计算周数的方式。
- 您不应该尝试"滚动"周计算。日期数学很复杂。
最好的解决方案是更改查询以使用 WEEK(mydate, 3)
,但如果没有,您应该将计算卸载到从以下位置检索其他一周数据的同一 MySQL 服务器:
$example_date = '2014-12-16';
$query = sprintf("SELECT WEEK('%s')", $example_date);
if( ! $res = $dbh->query($query) ) { die('fission mailed'); }
$val = $res->fetch();
printf("Week number: %d'n", $val[0]);
// Week number: 50
也许在 php 中尝试这样的事情
strftime(%U, strtotime($mydate))
查看 https://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_default_week_format
如果无法更改查询本身,则可以更改该变量。(尽管如果您无法更改查询,则可能无法这样做(。