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

如何在SQL Server中将字符串'Tue, 07 Dec 2021 04:35:05 GMT'转换为smalldatetime格式(yyyy-mm-dd hh:mm:ss)

解决方案:SQL Server中将GMT时间字符串转换为smalldatetime

首先要明确一点:smalldatetime是SQL Server的日期时间存储类型,本身不存储显示格式——我们的目标是先把输入的GMT字符串转换成smalldatetime,再按需输出成yyyy-mm-dd hh:mm:ss格式的字符串。

下面提供两种可靠的实现方式:

方法1:使用PARSE函数(推荐,无需手动清理字符串)

PARSE函数支持识别带星期、GMT后缀的国际标准时间格式,非常适配你的场景:

-- 定义输入字符串
DECLARE @InputTime NVARCHAR(50) = 'Tue, 07 Dec 2021 04:35:05 GMT'

-- 转换为smalldatetime类型
DECLARE @TargetSmallDatetime SMALLDATETIME = PARSE(@InputTime AS SMALLDATETIME USING 'en-US')

-- 如果需要以指定格式输出为字符串
SELECT CONVERT(NVARCHAR(20), @TargetSmallDatetime, 120) AS FormattedResult

执行后会得到:2021-12-07 04:35:00(注意:smalldatetime仅精确到分钟,秒数会被截断/四舍五入,这是该类型的固有特性)

方法2:使用CONVERT函数(性能更优,需先清理字符串)

如果追求更好的执行性能,可以先手动去掉字符串末尾的GMT后缀,再用CONVERT指定对应样式完成转换:

DECLARE @InputTime NVARCHAR(50) = 'Tue, 07 Dec 2021 04:35:05 GMT'

-- 移除末尾的' GMT'部分
DECLARE @CleanedTime NVARCHAR(50) = LEFT(@InputTime, LEN(@InputTime) - 4)

-- 转换为smalldatetime(样式100支持带星期的英文日期格式)
DECLARE @TargetSmallDatetime SMALLDATETIME = CONVERT(SMALLDATETIME, @CleanedTime, 100)

-- 输出指定格式的字符串
SELECT CONVERT(NVARCHAR(20), @TargetSmallDatetime, 120) AS FormattedResult

关键注意事项

  • smalldatetime的精度限制:该类型只能存储到分钟级别,秒数会被自动处理(0-29秒截断为0,30-59秒进1分钟)。如果需要保留秒级精度,建议改用datetime或datetime2类型。
  • 异常处理:如果输入字符串存在格式错误,建议使用TRY_PARSE或TRY_CONVERT代替,避免转换失败抛出错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 09:57:46