我想根据表格中的细节选择“当前可用”的记录。我认为应该很容易,但当然,我没有看到它。我希望在这里问这个问题会让我头疼,也许我可以回答我自己的问题!
我有两张桌子:
table_1
id
time_zone_name (eg, "US/Eastern")
table_2
tab1_id
day_of_week (1=Monday, 7=Saturday)
鉴于我知道当前的GMT时间戳是“2012-07-08 13:35:00 GMT”,我应该能够从table_1中选择记录,其中table_2.day_of_week是一个匹配的适用于时区。
MySql函数CONVERT_TZ看起来很有前途!
CONVERT_TZ('2004-01-01 12:00:00','GMT','MET')
CONVERT_TZ('2004-01-01 12:00:00','+ 00:00','+ 10:00');
我本可以尝试这个:
来自table_1内部联接table_2的SELECT id ON(table_1.id = table_2.table_1_id)
在哪里DAYOFWEEK(CONVERT_TZ(UTC_TIMESTAMP,'GMT',table_1.time_zone_name))= table_2.day_of_week
但CONVERT_TZ函数不接受我主机上安装的MySql上的“US / Eastern”等区域名称。根据MySql doc:
要使用“MET”或“Europe / Moscow”等指定时区,必须正确设置时区表。
显然他们没有正确设置。
还有更好的方法吗?任何建议都将不胜感激。
答案 0 :(得分:0)
如果您使用查找表来获得差异,我相信您要问网站用户他们在哪里。一旦他们进入他们的位置,您就可以轻松地使用一些PHP通过脚本设置他们的本地化。使用php localisation非常简单。 list of timezones确实很大。虽然它确实包含您的US / Eastern示例,但不建议您实现t,因为它仅维护(在“其他”下)以实现向后兼容性。
然后您可以使用date('Z')
php date来获取它们在几秒钟内的偏移量。如果将日期时间字段存储为unix时间戳,则添加或减去其偏移量将是一件微不足道的事情。这样,您可以对存储的数据进行标准化并使其保持零偏移(GMT)。
当您查询数据库中的数据时,只需将您在上一步中获得的偏移量添加到结果输出中。您甚至可以再次使用date()
将日期/时间格式化为其本地格式类型。