2015-02-11 52 views
0

我正在尋找一種方法來做某件事,我從來沒有做過,所以我正在尋求幫助。MySQL如果時間轉換

我有查詢作爲

SELECT DATE_FORMAT(CONVERT_TZ(pi.start,'+00:00','+10:00'), '%Y-%m-%d %h:%m:%s') as start, 
ifnull(dc.name,'Unknown') as source, 
format(sum(ifnull(pi.rev,0)),2) as revenue 
from trk.provider_imp pi 
left outer join trk.dsp_client dc 
on pi.clientid = dc.id 
and type = 'client' 
where pi.start between DATE_SUB(DATE_FORMAT(NOW() ,'%Y-%m-01'), INTERVAL 5 MONTH) AND DATE_FORMAT(LAST_DAY(NOW() - INTERVAL 1 MONTH),'%Y-%m-%d') 
and pi.status = 1 
group by start,pi.clientid 
order by pi.start, pi.clientid; 

上面的查詢工作,我得到我想要的結果,但是,對於時區轉換,我一個小時的身後,爲十一月,十二月和一月

有沒有一種方法可以添加if語句,如果'start'在'(2014年11月「,」2014年12月「,」2015年1月「之後,比'start'更好一小時)?

我將不勝感激各種幫助

感謝

回答

0

要做到你需要什麼,我已經找到了最簡單,最有效的方法是使用你的實際位置作爲參數,而不是GMT偏移。例如,如果您在墨爾本,而不是在冬季使用「+10:00」,而在夏季使用「+11:00」,則只需在時區參數中提及「澳大利亞/墨爾本」即可。這樣做會照顧夏令時偏移量。

你提到的例子+10,我假設墨爾本;這些語句2將返回不同的時間作爲DST偏移量是不同的:

SELECT CONVERT_TZ('2015-01-01 02:00:00','UTC','Australia/Melbourne'); 
SELECT CONVERT_TZ('2015-10-01 02:00:00','UTC','Australia/Melbourne'); 

需要說明的是,標準的MySQL安裝不來的時區的名稱內置。 按照這些說明在MySQL服務器中獲取這些指令:http://dev.mysql.com/doc/refman/5.1/en/time-zone-support.html