SQL 功能Select WEEK(mydate) ...
返回的周数不同于 PHP 函数date('W',strtotime($mydate))
其中$mydate
是通过选择 SQL db上的(Y-m-d h:i:s)
变量获得的格式mydate
的字符串。
只有一周的差异,但由于0和52的边缘情况,我无法减去它们,它们会在那里混淆。
我知道WEEK(mydate,3)
会使它们相等,但我无法更改 SQL 语句,我需要在 PHP 计算中更改它。
如何更改功能日期(' W',strtotime($ data))所以它给我一周等于SQL?
提前致谢。
答案 0 :(得分:3)
最佳解决方案是将查询更改为使用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
答案 1 :(得分:1)
也许在php
中尝试这样的事情strftime(%U, strtotime($mydate))
答案 2 :(得分:0)
查看https://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_default_week_format
如果您无法更改查询本身,则可以更改该变量。 (虽然您可能无法,但如果无法更改查询)。