不支持+05:45的时区

Viewed 13

遇到+05:45的这种非整半点的时区 无法转换

SELECT
now(),
finish_time,
time_zone,
STR_TO_DATE(finish_time, '%Y-%m-%d %H:%i:%s') AS x8,
CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', time_zone) AS x6,
CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', '+05:45') AS x5,
CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', '+05:45') AS x3,
CONVERT_TZ('2024-04-29 11:34:30', '+08:00', '+05:45') AS x4,
case when time_zone = '+05:45' then date_sub(CONVERT_TZ(finish_time, '+08:00', '+06:00'), INTERVAL 15 MINUTE) else CONVERT_TZ(finish_time, '+08:00', time_zone) end as x111,
CONVERT_TZ('2024-04-29 11:34:30', '+08:00',
CASE WHEN time_zone = '+05:45' THEN '+06:00' ELSE time_zone END) AS x41,
DATE_FORMAT(CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', time_zone), '%Y-%m-%d') AS x7,
STR_TO_DATE(
DATE_FORMAT(CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', time_zone), '%Y-%m-%d'),
'%Y-%m-%d %H:%i:%s'
) AS x1,
STR_TO_DATE(
DATE_FORMAT(CONVERT_TZ(now(), '+08:00', time_zone), '%Y-%m-%d'),
'%Y-%m-%d %H:%i:%s'
) AS x2,
DATEDIFF(
STR_TO_DATE(
DATE_FORMAT(CONVERT_TZ(now(), '+08:00', time_zone), '%Y-%m-%d'),
'%Y-%m-%d %H:%i:%s'
),
STR_TO_DATE(
DATE_FORMAT(CONVERT_TZ(CAST(finish_time AS DATETIME), '+08:00', time_zone), '%Y-%m-%d'),
'%Y-%m-%d %H:%i:%s'
)
) + 1 AS xxxx
FROM ods_profile.recharge_view rv
LEFT JOIN ods_profile.player_info_view piv ON rv.uid = piv.id
LEFT JOIN ods_profile.sys_country_view scv ON piv.area_code = scv.iso3166_code
WHERE time_zone = '+05:45'

image.png

2 Answers

case when scv.time_zone = '+05:45' then CONVERT_TZ(rv.event_time, '+08:00', 'Asia/Kathmandu') else CONVERT_TZ(rv.event_time, '+08:00', scv.time_zone) end as event_time_local,
采用了这种方式临时解决。但是感觉不是很友好,代码兼容增加sql复杂度。

case when time_zone = '+05:45' then date_sub(CONVERT_TZ(finish_time, '+08:00', '+06:00'), INTERVAL 15 MINUTE) else CONVERT_TZ(finish_time, '+08:00', time_zone) end as x111,
这种也行。

还是希望函数原生支持45这种时区

好的,后续版本会进行支持。