SQL Server中如何将HH:MM:SS格式的varchar转换为仅显示时分秒的datetime
原因说明
SQL Server 中的datetime类型本身强制包含日期+时间两部分,当你仅传入时间字符串转换为datetime时,系统会自动补全默认日期1900-01-01,因此不存在仅包含时分秒的datetime类型值。要实现你的需求,可以选择以下两种方案:
方案1:使用time类型(推荐,SQL Server 2008及以上版本支持)
time是SQL Server专门用于存储纯时间数据的类型,直接转换即可得到无日期前缀的结果:
DECLARE @Duration Varchar(10) SET @Duration = '00:01:23' -- 注意原代码中变量名漏写了@符号,此处修正 SELECT CONVERT(time, @Duration, 8) AS duration
输出结果:
00:01:23.0000000
如果不需要小数秒,可以进一步做格式化处理。
方案2:转换为指定格式的字符串
如果你需要的是严格HH:MM:SS格式的输出结果,直接转换为长度为8的字符串即可:
DECLARE @Duration Varchar(10) SET @Duration = '00:01:23' SELECT CONVERT(varchar(8), @Duration, 8) AS duration
输出结果完全符合你的预期:
00:01:23
内容的提问来源于stack exchange,提问作者SChavan
相关产品推荐
相关产品推荐

