将3列(日期,时间,时区作为VARCHAR)组合并表示为UTC

时间:2015-04-01 14:23:58

标签: mysql date datetime utc

由于特定原因,我们存储了某些事件'将日期分为3个单独的列(而不是单个DATETIME列):

day_begin (column type: date)
hour_begin (column type: time)
timezone (column type: varchar)

以下是包含这三列数据的示例数据行:

2015-01-27
09:00:00
Europe/Rome

根据这些信息,我想做一个SELECT并且只获取行,其开始日期在特定的UTC间隔内(例如,仅从UTC开始到2015年1月底的UTC)。

如果将时间存储在单个DATETIME列中,这是非常简单的,但由于我们无法更改产品以满足此特定需求 - 我需要使用MySQL已经提供的内容我们作为与UTC比较的功能。

1 个答案:

答案 0 :(得分:1)

解决方案:

SELECT CONVERT_TZ(CONCAT_WS(" ", day_begin, hour_begin), timezone, "UTC")

该函数基本上连接了日期和小时列,并使用timezone列中的值作为处理时区转换的CONVERT_TZ()的第二个参数。