我有以下查询,我正在尝试检索来自各个时区的数据。
因此,在生成每日报告时,我需要根据每个时区提取具有不同时间值的数据。
由于我提取数据的表非常庞大,并且有大约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
答案 0 :(得分:1)
您需要的第一件事是将所有日期转换为统一状态,例如GMT。因此,您需要将EVENT_TIME字段转换为GMT,或者包含包含GMT的其他字段。用户定义的函数是可以的,但效率低,因为使用它的查询不会使用索引。此外,带有“名称” - “时区偏移”映射的辅助摘要表可以提供帮助,只需将其连接到NE_NAME上,向EVENT_TIME添加偏移量并在BETWEEN子句中使用结果(作为函数效率低)