将MYSQL中的日期列转换为不同的格式

时间:2018-02-07 12:46:51

标签: mysql

我需要从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`))

希望有人能指出我正确的方向

1 个答案:

答案 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)
    )