gpt4 book ai didi

MySQL IF 时间转换

转载 作者:行者123 更新时间:2023-11-29 23:01:28 24 4
gpt4 key购买 nike

我正在寻找一种方法来做一些我以前从未做过的事情。

我的查询为

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' 位于 ('Nov 2014','Dec 2014', 'Jan 2015', then 'start' 加一小时)?

最佳答案

要完成您需要的操作,我发现的最简单且最有效的方法是使用您的实际位置作为参数,而不是 GMT 偏移量。

例如,如果您在墨尔本,则无需在冬季使用“+10:00”,在夏季使用“+11:00”,只需在时区参数中提及“澳大利亚/墨尔本”即可。这样做可以解决夏令时偏移问题。

你的例子提到了+10,我假设是墨尔本;由于 DST 偏移量不同,这 2 个语句将返回不同的时间:

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

关于MySQL IF 时间转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28464230/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com