2012-11-03 37 views
0

好这里是我想要做:更改时区使用COVERT_TZ功能,PHP的YEARWEEK偏移,MySQL的

$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)"; 

回答

1

我不是一个PHP或MySQL的开发者,但它听起来像是你应该只是在你原来的代码被改变DATEYEARWEEK

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

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

另请注意,您并非真的提供时区 - 您正在提供补偿。这意味着您的代码基于夏令时给出不一致的结果。这可能会也可能不是问题,具体取决于您的要求。

+0

感谢您的帮助 - 它给了我一个错误消息**对原生函数'CONVERT_TZ'的调用中错误的参数计数** 夏令时期间的偏移问题与我无关,因为我可以切换它手动。我所尝试的只是将我在“昨天”输出中使用的相同逻辑应用到“本周”输出中。我认为你提供的这一行是正确的,应该只是一个小错误。我现在试图找到它。 –

+0

@GeorgiGrancharov:糟糕,我有一些括号错误。将解决这些问题。目前还不清楚你的YEARWEEK版本中from_unixtime的'1'参数是什么。 –

+0

它来自我在此线程中收到的答案:[http://stackoverflow.com/questions/13192170/mysql-date-show-results-today-yesterday-week#comment17957641_13192170] - 我现在检查它 –