【问题标题】:Change timezone offset for YEARWEEK using COVERT_TZ function, php, mysql使用 COVERT_TZ 函数、php、mysql 更改 YEARWEEK 的时区偏移量
【发布时间】:2012-10-23 20:24:11
【问题描述】:

好的,这就是我想要做的:

 $timezone1 = '+00:00';
 $timezone2 = '+08:00';

WHERE DATE(CONVERT_TZ(from_unixtime(comment_date), '$timezone1', '$timezone2')) =  DATE_SUB(CURRENT_DATE,INTERVAL 1 DAY)";

该行通过将输出转换为我的正确时区,为我提供了表格中昨天提交的总数。

现在我想对本周提交的总数做同样的事情:

 WHERE YEARWEEK(from_unixtime(comment_date), 1) =  YEARWEEK(CURRENT_DATE, 1)";

这给了我本周提交的总数,但时间偏移量错误。如何让 $timezone1 和 $timezone2 进入这一行?我尝试了几种组合,但似乎没有任何效果,例如:

 WHERE (CONVERT_TZ(YEARWEEK(from_unixtime(comment_date), 1), '$timezone1', '$timezone2')) =  YEARWEEK(CURRENT_DATE, 1)";

【问题讨论】:

    标签: php mysql datetime timezone convert-tz


    【解决方案1】:

    我不是 PHP 或 MySQL 开发人员,但听起来您应该将原始代码中的 DATE 更改为 YEARWEEK

    WHERE YEARWEEK(CONVERT_TZ(from_unixtime(comment_date), '$timezone1', '$timezone2')) 
        =  YEARWEEK(CURRENT_DATE, 1)";
    

    如果这不起作用,请提供有关它不起作用的方式的更多信息。

    另请注意,您并没有真正提供时区 - 您提供的是偏移量。这意味着您的代码根据夏令时给出不一致的结果。这可能是也可能不是问题,具体取决于您的要求。

    【讨论】:

    • 感谢您的帮助 - 它给了我一条错误消息 调用本机函数 'CONVERT_TZ' 时参数计数不正确 夏令时期间的偏移问题与我无关,因为我可以手动切换它。我正在尝试的只是将我在“昨天”输出中使用的相同逻辑应用于“本周”输出。我认为您提供的行是正确的,应该只是一个小错误。我现在正在寻找它。
    • @GeorgiGrancharov:糟糕,我的括号有误。会修复那些。尚不清楚 from_unixtime 中的 1 参数在您的 YEARWEEK 版本中的用途。
    • 它来自我在此线程中收到的答案:[stackoverflow.com/questions/13192170/… - 我现在会检查它
    • 您的答案有效,我无法检查它,但目前它显示本周当前提交的内容。非常感谢,@Jon Skeet
    猜你喜欢
    • 2011-04-22
    • 2013-07-19
    • 1970-01-01
    • 2014-12-28
    • 2013-07-11
    • 2014-12-10
    • 2023-03-03
    • 2011-09-23
    • 2011-06-11
    相关资源
    最近更新 更多