Mysql where子句用于不同的时区

时间:2014-12-23 15:37:24

标签: mysql timezone where-clause

我有以下查询,我正在尝试检索来自各个时区的数据。

因此,在生成每日报告时,我需要根据每个时区提取具有不同时间值的数据。

由于我提取数据的表非常庞大,并且有大约20多种不同的时区元素,只是要求提供更有效的方式来编写此查询。

感谢您的帮助。

insert into ".$DailyTable." (".$DailyColList.")"." select ".$HourlyColList." from ".$HourlyTable." where 

(NE_NAME='abc1' and EVENT_TIME between '2014-12-22 00:00:00' AND '2014-12-22 23:00:00') OR !!Comment->[CST]
(NE_NAME='abc2' and EVENT_TIME between '2014-12-21 23:00:00' AND '2014-12-22 22:00:00') OR !!Comment->[EST]
(NE_NAME='abc3' and EVENT_TIME between '2014-12-21 22:00:00' AND '2014-12-22 21:00:00') OR !!Comment->[AST]
(NE_NAME='abc4' and EVENT_TIME between '2014-12-22 00:00:00' AND '2014-12-22 23:00:00') OR !!Comment->[PST]
.
.
.
.
.
.
(NE_NAME='abc22' and EVENT_TIME between '2014-12-22 00:00:00' AND '2014-12-22 23:00:00')

 group by ".$GroupBy

1 个答案:

答案 0 :(得分:1)

您需要的第一件事是将所有日期转换为统一状态,例如GMT。因此,您需要将EVENT_TIME字段转换为GMT,或者包含包含GMT的其他字段。用户定义的函数是可以的,但效率低,因为使用它的查询不会使用索引。此外,带有“名称” - “时区偏移”映射的辅助摘要表可以提供帮助,只需将其连接到NE_NAME上,向EVENT_TIME添加偏移量并在BETWEEN子句中使用结果(作为函数效率低)