大型MySQL更新查询

时间:2009-03-31 19:52:21

标签: php mysql

从这个帖子得到答案之后,如果有任何读者可以参考它,它将为我节省很多时间:link text 我发现我需要根据user_timezone列中已存在的内容更新(在mysql数据库中)一个时区代码,单独(例如10 +,1-等)到olsen代码(例如“Europe / London”等) 。什么是最容易做到的?

任何想法都会非常感激。

4 个答案:

答案 0 :(得分:1)

很遗憾,您无法知道用户所处的区域是否属于UTC偏移量。如果您查看 Wikipedia's list of timezones,您会注意到许多区域共享相同的时间偏移,例如欧洲/萨拉热窝和欧洲/布鲁塞尔

答案 1 :(得分:1)

鉴于时区偏移(例如UTC + 2)可能对应于Olson数据库中的许多条目(例如欧洲/索菲亚,欧洲/里加,非洲/开罗等),您必须事先选择偏移到 - 奥尔森码对应。 创建一个描述这些对应关系的表,然后使用它来构建更新语句。

答案 2 :(得分:0)

您可以使用DateTimeZone课程,但获得的不是小时数,而是分钟数(IIRC)。

答案 3 :(得分:0)

在mysql中重映射值的方法如下:

UPDATE `sometable`
SET `somecolumn` = IFNULL(ELT(FIELD(`somecolumn`,
    'oldval1', 'oldval2', 'oldval3'),
    'newval1', 'newval2', 'newval3'),
    `somecolumn`
);

这会将'oldval1'的出现更改为'newval1'等等,而只留下'oldval'列表中没有出现的任何内容。