我有一个 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
来“干净地”执行此操作?
答案 0 :(得分:0)
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;
这就是我所说的答案。