我需要从pubDate列更新列pubDate_Date到2018-02-04 20:39:55,格式为Sun,04 Feb 2018 20:39:55 +0100。
我尝试了以下内容,但没有成功:
UPDATE `feeds` SET `pubDate_Date` = date('Y-m-d H:i:s', strtotime(`pubDate`))
希望有人能指出我正确的方向
答案 0 :(得分:1)
通常,您可以使用MySQL的STR_TO_DATE()
函数:
UPDATE feeds SET pubDate_Date = STR_TO_DATE(pubDate, '%a, %d %b %Y %T')
然而,没有时区偏移的格式代码,因此MySQL将从原始字符串的末尾忽略(而是将每个字符串解释为会话的time_zone
)。因此:
如果所有记录都在同一时区,您只需在上述更新命令之前执行SET time_zone = '+01:00'
。
否则,请执行以下操作,将每次调整到预期的时区:
UPDATE feeds SET pubDate_Date = CONVERT_TZ(
STR_TO_DATE(pubDate, '%a, %d %b %Y %T'),
@@session.time_zone,
CONCAT(SUBSTR(pubDate, -5, 3), ':', RIGHT(pubDate, 2)
)