以RFC2822格式插入日期 - 无时区说明符



我有一个RFC2822格式的字符串,我想以UTC时间插入适当的时间戳。

到目前为止,我已经想出了

DATE_FORMAT(?, "%a, %d %b %Y %T -0700")

但问题是 TZ 偏移-0700 ,似乎没有格式说明符。

如何正确地将这样的时间戳插入数据库?

我想避免在应用程序端进行处理。

更新

SELECT CONVERT_TZ(STR_TO_DATE(SUBSTRING('Mon, 15 Aug 2005 15:52:01 +0200',1,25), '%a, %d %b %Y %T'),CONCAT(SUBSTRING('Mon, 15 Aug 2005 15:52:01 +0200',27,3), ':', SUBSTRING('Mon, 15 Aug 2005 15:52:01 +0200',30,2)),'+00:00') AS conv;

如何使用变量而不是重复字符串Mon, 15 Aug 2005 15:52:01 +0200来"干净"地做到这一点?

SET @a:='Mon, 15 Aug 2005 15:52:01 +0200';
SELECT
  CONVERT_TZ(
    STR_TO_DATE(SUBSTRING(@a,1,25), '%a, %d %b %Y %T'),
    CONCAT(SUBSTRING(@a,27,3), ':', SUBSTRING(@a,30,2)),
    '+00:00'
  )
AS conv;

这就是我所说的答案。

最新更新