Хотя первоначальный ответ на этот вопрос был полезным, оставленный пользователем комментарий « Michael - sqlbot » оказался еще более полезным.Он использует INSERT()
строковую функцию , и с этим я смог придумать следующее, и он прекрасно работает!
CONVERT_TZ(`timestamp`,'+00:00',INSERT(`offset`,LENGTH(`offset`)-1,0,':'));
И вот результаты, использующие это с указанными ниже временными метками.и связанные смещения:
SELECT CONVERT_TZ('2018-05-28 02:34:58','+00:00',INSERT('+0300',LENGTH('+0300')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 07:50:12','+00:00',INSERT('+0400',LENGTH('+0400')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 09:23:34','+00:00',INSERT('+0530',LENGTH('+0530')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 12:16:56','+00:00',INSERT('+1000',LENGTH('+1000')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 16:07:17','+00:00',INSERT('-0200',LENGTH('-0200')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 20:02:05','+00:00',INSERT('-0700',LENGTH('-0700')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 23:33:03','+00:00',INSERT('-1000',LENGTH('-1000')-1,0,':'));
SELECT CONVERT_TZ('2018-05-28 23:33:03','+00:00',INSERT('-0000',LENGTH('-0000')-1,0,':'));
И вот результаты:
2018-05-28 02:34:58
со смещением +0300
становится: 2018-05-28 05:34:58
2018-05-28 07:50:12
со смещением +0400
становится: 2018-05-28 11:50:12
2018-05-28 09:23:34
со смещением +0530
становится: 2018-05-28 14:53:34
2018-05-28 12:16:56
со смещением +1000
становится: 2018-05-28 22:16:56
2018-05-28 16:07:17
со смещением -0200
становится: 2018-05-28 14:07:17
2018-05-28 20:02:05
со смещением -0700
становится: 2018-05-28 13:02:05
2018-05-28 23:33:03
со смещением -1000
становится: 2018-05-28 13:33:03
2018-05-28 23:33:03
со смещением -0000
становится: 2018-05-28 23:33:03