我需要将值为20061212
的字符串/ varchar变量设为字符串/ varchar值2006-12-12 00:00:00
我找不到合适的SQL语法代码来使它在SQL Server中发生。
可以在SQL Server中将代码创建为存储过程或类似代码。
答案 0 :(得分:4)
SELECT
LEFT(@string, 4)
+ '-' + SUBSTRING(@string, 5, 2)
+ '-' + SUBSTRING(@string, 7, 2)
+ ' 00:00:00'
你可以将你的字符串转换为DATETIME,然后将其转换回所选格式的字符串。但这可能比这个更明确的选择更慢。
SELECT
CONVERT(VARCHAR(19), CAST(@string AS DATETIME), 120)
答案 1 :(得分:2)
您可以使用stuff
declare @s varchar(8) = '20061212'
select stuff(stuff(@s, 7, 0, '-'), 5, 0, '-')+' 00:00:00'
答案 2 :(得分:1)
您可以使用SUBSTRING()函数(详见此处:http://www.sql-statements.com/sql-substring.html)拆开原始字符串,然后将这些片段与添加的短划线放在一起。结束时使用连接运算符+。
答案 3 :(得分:1)
独立于文化的变体:
SELECT CONVERT(varchar, convert(datetime, '20061212', 112), 120)
但这仅适用于DATETIME允许的日期范围,请改用<{1}}