MySQL IF时间转换



我正在寻找一种做某事的方法,我以前从未做过。

我将查询作为

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;

上面的查询有效,我得到了我想要的结果,然而,对于时区转换,我落后了一个小时,11月、12月和1月

有没有一种方法可以添加if语句,比如如果"start"在("2014年11月"、"2014年12月"one_answers"2015年1月",而不是"start"加一小时)?

要做您需要的事情,我找到的最简单、最有效的方法是使用您的实际位置作为参数,而不是GMT偏移。

例如,如果您在墨尔本,您只需在时区参数中提及"澳大利亚/墨尔本",而不是在冬季使用"+10:00",在夏季使用"+11:00"。这样做将处理夏令时偏移。

你的例子提到+10,我假设是墨尔本;由于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

相关内容

  • 没有找到相关文章

最新更新