所以我有一个MySQL5.7数据库,它在两个单独的列中存储utc时间戳和时区偏移量。时区在 timezone
偏移量在 offset
.
据我所知,我可以通过运行这样的命令,使用 CONVERT_TZ
:
CONVERT_TZ(`timestamp`,'+00:00',`offset`)
但我面临的问题是,存储偏移量值时没有用冒号分隔小时和分钟,如下所示: -0400
.
能够正确使用 CONVERT_TZ
我需要改变一下 -0400
至 -04:00
,但是怎么做?有正则表达式方法吗?
我可以利用 REPLACE
,但这仍然显得草率:
CONVERT_TZ(`timestamp`,'+00:00',REPLACE(`offset`,'00',':00'))
2条答案
按热度按时间suzh9iv81#
要在偏移列中插入冒号,可以使用以下命令:
bbmckpt72#
虽然这个问题的原始答案很有用,但用户“michael-sqlbot”留下的评论更有用。它使用
INSERT()
字符串函数,太好了!这些是使用以下时间戳和相关偏移量的结果:
结果如下:
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