You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将含UTC时差的RSS pubDate字符串转换为MySQL datetime

解决RSS pubDate转MySQL datetime的时区偏移问题

嘿,我来帮你理清这个问题:

先搞懂-0800是什么

  • -0800是时区偏移量,代表这个时间比UTC(协调世界时)晚8小时,对应的是美国太平洋时区(PST/PDT)的偏移值。

为什么你的SQL返回NULL?

你用的%T格式符是用来匹配HH:MM:SS格式的时间字符串的,完全不匹配-0800这种时区偏移格式,所以str_to_date无法解析整个字符串,返回NULL。

正确的格式符替换方案

要匹配±HHMM形式的时区偏移,你需要用%z格式符,这是MySQL专门用来处理这种四位带符号时区偏移的格式标记。

修正后的SQL语句

select str_to_date('Mon, 26 Feb 2018 03:00:00 -0800', '%W, %e %b %Y %H:%i:%s %z') ;

额外提示

  • 注意:%z格式符在MySQL 5.5.3及以上版本才支持,如果你的数据库版本太老,可能需要先升级或者手动处理时区偏移(比如截取前19位字符再转换,但这样会丢失时区信息)。
  • 当你把转换后的时间存入datetime类型字段时,MySQL会自动将其转换为数据库服务器所在时区的时间进行存储;如果需要保留时区信息,可以考虑使用timestamp类型(会自动转换为UTC存储,查询时转回服务器时区),或者单独存储时区偏移值。

内容的提问来源于stack exchange,提问作者Nikesh Kedlaya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:16:41