2015-04-01 12 views
-1

由于特定的原因,我们正在存储某些事件日期为3个独立的列(而不是单个DATETIME柱):联合3列(日期,时间,时区为VARCHAR)和表示与UTC

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。

+0

是什么阻止您简单地将时间转换为给定时区的UTC?这听起来像你认为MySQL已经有一个功能为此目的。 – 2015-04-01 14:35:10

+0

所以你所有的列都有相同的时区,即“欧洲/罗马”? – 2015-04-01 14:35:36

+0

@AbhikChakraborty不,这是一个样本行。 – 2015-04-01 15:03:13

回答

1

解决方案:

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

功能基本上串接的日期和时间列,并使用从所述timezone列作为CONVERT_TZ()它处理时区转换的第二参数的值。