Php MySQL:在调整时区后,想知道如何根据日期选择记录
我想根据表中的细节选择当前可用的记录。我认为这应该很容易,但是,当然,我没有看到。我希望在这里提问能让我头脑清醒,也许我能回答我自己的问题 我有两张桌子:Php MySQL:在调整时区后,想知道如何根据日期选择记录,php,mysql,timezone,timezone-offset,convert-tz,Php,Mysql,Timezone,Timezone Offset,Convert Tz,我想根据表中的细节选择当前可用的记录。我认为这应该很容易,但是,当然,我没有看到。我希望在这里提问能让我头脑清醒,也许我能回答我自己的问题 我有两张桌子: 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
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,我应该能够从表1中选择记录,其中表2.day是调整时区后的匹配项
MySql函数CONVERT_TZ看起来很有前途
转换为'2004-01-01 12:00:00'、'GMT'、'MET'
转换为“2004-01-01 12:00:00”、“00+00”、“10:00”
我本可以试试这个:
从表1上的表1内部联接表2中选择id。id=表2。表1\U id
其中DAYOFWEEKCONVERT\u TZUTC\u时间戳“GMT”,表1.time\u zone\u name=表2.day\u of\u week
但是CONVERT_TZ函数不接受像我的主机上安装的MySql上的US/Eastern这样的区域名称。根据MySql文档:
要使用命名时区,如“大都会”或“欧洲/莫斯科”,必须正确设置时区表
很明显,它们没有正确设置
有没有更好的办法?任何建议都将不胜感激。如果您使用查找表来获得差异,我相信您是在询问网站用户他们在哪里。一旦它们进入它们的位置,您就可以轻松地使用一些PHP通过脚本设置它们的本地化。这对我来说很容易。这个房间真的很大。虽然它确实包含您的US/Eastern示例,但不建议您实现t,因为它仅在“Others”下维护,以便向后兼容 然后您可以使用这个日期'Z'以秒为单位获得它们的偏移量。如果您将datetime字段存储为unix时间戳,那么添加或减去它们的偏移量将是一件小事。通过这种方式,您可以规范化存储的数据,并将其保持在零偏移GMT
在查询数据库中的数据时,只需将上面步骤中得到的偏移量添加到结果输出中即可。您甚至可以再次使用date将日期/时间格式化为本地格式类型。再次感谢。您的解决方案似乎在用户记录中存储gmt偏移量-05:00,而不是时区名称US/Eastern。我考虑过这一点,但它似乎没有解决DST的变化。我想我可以存储夏季/冬季两个偏移量,然后我只需要根据当前时间知道使用哪一个。嗯。但是有些地方不是在一年中的不同时间改成了DST吗?六羟甲基三聚氰胺六甲醚。