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

SQL Server如何将GMT日期字符串转为指定格式datetime

SQL Server 转换RFC格式GMT日期为指定格式的方法

你提供的Fri, 24 Jun 2022 16:44:39 GMT是标准RFC 1123格式的时间字符串,转换时需要注意:datetime类型本身是二进制存储的时间值,没有固定显示格式,你需要的yyyy:mm:dd hh:mm:ss属于字符串层面的展示格式,不要混淆存储类型和展示格式的差异。

具体实现步骤

1. 将GMT字符串转换为datetime类型

根据你使用的SQL Server版本选对应写法即可:

  • SQL Server 2012及以上版本(推荐写法,无需手动处理字符串):
    直接用PARSE函数指定英文区域识别格式:
    -- 单值转换示例
    SELECT PARSE('Fri, 24 Jun 2022 16:44:39 GMT' AS datetime USING 'en-US') AS DateTimeValue;
    
  • 兼容SQL Server 2008及更早版本:
    先去掉字符串末尾的 GMT后缀,再用样式码113(欧洲格式英文月份时间)做转换,字符串开头的星期缩写SQL Server会自动忽略:
    SELECT CONVERT(datetime, REPLACE('Fri, 24 Jun 2022 16:44:39 GMT', ' GMT', ''), 113) AS DateTimeValue;
    

2. 格式化为yyyy:mm:dd hh:mm:ss格式字符串

如果需要输出指定格式的字符串结果,在第一步转换为datetime的基础上做格式化即可:

  • SQL Server 2012及以上版本,用FORMAT函数直接指定格式串:
    DECLARE @rawStr VARCHAR(50) = 'Fri, 24 Jun 2022 16:44:39 GMT';
    SELECT FORMAT(PARSE(@rawStr AS datetime USING 'en-US'), 'yyyy:MM:dd HH:mm:ss') AS FormattedResult;
    -- 输出结果:2022:06:24 16:44:39
    
  • 低版本兼容写法,先转成yyyy-MM-dd HH:mm:ss标准字符串,再把横杠替换为冒号:
    DECLARE @rawStr VARCHAR(50) = 'Fri, 24 Jun 2022 16:44:39 GMT';
    SELECT REPLACE(CONVERT(VARCHAR(19), CONVERT(datetime, REPLACE(@rawStr, ' GMT', ''), 113), 120), '-', ':') AS FormattedResult;
    

补充说明

  • 生产环境建议时间字段一律用datetime/datetime2类型存储,不要存格式化后的字符串,避免后续做时间计算、范围查询时出现类型转换错误。
  • 如果需要把GMT时间转换为本地时区(比如东八区北京时间),可以用datetimeoffset类型配合AT TIME ZONE实现:
    -- 转换为北京时间示例
    SELECT PARSE('Fri, 24 Jun 2022 16:44:39 GMT' AS datetimeoffset USING 'en-US') AT TIME ZONE 'China Standard Time' AS CST_Time;
    -- 输出结果:2022-06-25 00:44:39.0000000 +08:00
    

内容的提问来源于stack exchange,提问作者willy sepulveda

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:48:16