我有一个providers
包含三列的表(包含更多列,但在这种情况下并不重要):
starttime
, 您可以联系他的开始时间。endtime
,您可以联系他的最后一小时。region_id
, 提供者所在的地区。美国:加利福尼亚、德克萨斯等 英国:英格兰、苏格兰等
starttime
并且endtime
是没有时区列的时间,但是,“间接地”,它们的值具有提供者所在区域的时区。例如:
starttime | endtime | region_id (time zone of region) | "real" st | "real" et
----------|----------|---------------------------------|-----------|-----------
03:00:00 | 17:00:00 | 1 (EGT => -1) | 02:00:00 | 16:00:00
通常我需要获取时间范围在当前服务器时间范围内的供应商列表(考虑到时区转换)。问题是时区不是“恒定的”,即它们可能会在夏季发生变化。但是,这种变化非常特定于地区,并不总是同时进行:EGT <=> EGST、ART <=> ARST 等。
问题是:
1.是否需要使用网络服务每隔一段时间更新地区的时区?有谁知道可以提供服务的网络服务?
2.有没有更好的方法来解决这个问题?
提前致谢。
更新
我将举一个例子来澄清我想要得到的东西。在表中providers
,我发现了以下记录:
idproviders | starttime | endtime | region_id
------------|-----------|----------|-----------
1 | 03:00:00 | 17:00:00 | 23 (Texas)
2 | 04:00:00 | 18:00:00 | 23 (Texas)
如果我在一月份执行查询,则使用以下信息:
- 服务器时间(UTC 偏移量)= 0 小时
- 德州供应商(UTC 偏移量)= +1 小时
- 服务器时间 = 02:00:00
我应该得到以下结果:idproviders = 1
如果我在 6 月执行查询,使用以下信息:
- 服务器时间(UTC 偏移量)= 0 小时
- 德州供应商(UTC 偏移量)= +2 小时(他们的本地时间没有改变,但他们的时区改变了)
- 服务器时间 = 02:00:00
我应该得到以下结果:idproviders = 1 和 2