由于特定原因,我们存储了某些事件'将日期分为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比较的功能。
答案 0 :(得分:1)
解决方案:
SELECT CONVERT_TZ(CONCAT_WS(" ", day_begin, hour_begin), timezone, "UTC")
该函数基本上连接了日期和小时列,并使用timezone
列中的值作为处理时区转换的CONVERT_TZ()
的第二个参数。