SQL WEEK()给出不同于星期的数字('W')

时间:2014-12-17 17:40:16

标签: php mysql sql

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?

提前致谢。

3 个答案:

答案 0 :(得分:3)

  1. 您无法更改PHP计算周数的方式。
  2. 你不应该试图自己推动自己的"周计算。日期数学是hella complex。
  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

如果您无法更改查询本身,则可以更改该变量。 (虽然您可能无法,但如果无法更改查询)。