我有以下查询,我正在尝试检索来自不同时区的数据。
因此,在生成每日报告时,我需要根据每个时区提取具有不同时间值的数据。
由于我提取数据的表相当大,并且大约有 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
您需要做的第一件事是将所有日期转换为统一状态,例如 GMT。因此,您需要将EVENT_TIME字段转换为 GMT,或者具有包含 GMT 的其他字段。用户定义的函数是可以的,但效率低下,因为使用它的查询不会使用索引。此外,具有"name"-"时区偏移量"映射的辅助摘要表可以提供帮助,只需在NE_NAME上内部连接它,将偏移量添加到EVENT_TIME并在 BETWEEN 子句中使用 result(与函数一样低效(