2012-11-03 35 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] - 我現在檢查它 –