小编Mar*_*ark的帖子

给定城市/州/国家将时间转换为当地时间

我想编写一个可以将EST(USEast标准时间)的时间转换为另一个本地时区的时间的函数.

输入将是"时间在EST",格式为"Ymd H:i:s"(即2011-08-23 05:05:35),"城市","州"和"国家"

该功能应返回当地时间(即如果城市,州,国家是旧金山,加利福尼亚州,美国,并且EST的时间是2011-08-23 05:05:35,功能应该返回2011-08-23 02: 05:35)

我试图从php.net搞清楚,但似乎我需要一个大陆来指定时区......我不知道如何将一个国家转换为一个大陆.

谢谢

php timezone datetime function

11
推荐指数
2
解决办法
758
查看次数

需要有效的方法在2亿行数据库(PHP)上进行简单的计算

我正在为以下问题请求PHP解决方案:

我在数据库中有~15个表,每个表有10-50万行,总计达到2亿行,其中列为userID,B,C,D.

我有9个其他表的列userID,fbID.每个表有大约200万行.从userID到fbID的一对一映射.

我的目标是输出这些2亿行的文件,列为fbID,B,C,D.

为了做到这一点,我必须搜索包含userID和fbID列的所有9个表,因为userID可以在一个表中找到,但不能在其他表中找到.我可以在任何一个表中找到userID后立即停止.这部分我正在使用SQL和PHP.SQL查询包括LIMIT 1,因此每当找到userID时我只返回1行,因为这些表可以包含多个具有相同userID的行.

不幸的是,这个算法需要大约60s/1k行,这需要大约130天才能完成.

有没有更有效的方法来做到这一点?

我不是数据库计算时间如何工作的专家,但我想到了一些想法:

-query遍历所有9个表,并使用userID键和fBID值创建查找表.

- 使用这9个表在数据库中创建一个新表,每个userID有一行,以及相应的FBID并搜索这个表.

这里有关于表格的更具体信息:

表总计达2亿行(每个行看起来像这样):

Column         Type        Null      Default 

dtLogTime      datetime    Yes       NULL 

iUin           int(10)     No         

B              int(10)     No

C              int(10)     No

D              int(10)     No
Run Code Online (Sandbox Code Playgroud)

索引:

Keyname   Type  Unique Packed Column    Cardinality Collation Null Comment 

dtLogTime BTREE No     No     dtLogTime 323542      A         YES  

iUin      BTREE No     No     iUin      323542      A
Run Code Online (Sandbox Code Playgroud)

其他9个表中的一个:

Column     Type        Null     Default     Comments 

dtLogTime  datetime    Yes      NULL   

iUin       int(10)     No         

vFBID      varchar(48) No    
Run Code Online (Sandbox Code Playgroud)

索引:

Keyname   Type  Unique Packed …
Run Code Online (Sandbox Code Playgroud)

php sql database performance

2
推荐指数
1
解决办法
373
查看次数

标签 统计

php ×2

database ×1

datetime ×1

function ×1

performance ×1

sql ×1

timezone ×1