Это старый вопрос, но я оказался здесь в феврале 2018 года, так что ...
В SQL Server 2012
+ рассмотрим Format
- ref https://docs.microsoft.com/en-us/sql/t-sql/functions/format-transact-sql (B и D)
Для 2008
и выше:
declare @d char(8)
-- string manipulation assumes clean data
set @d = '31012010'
SELECT LEFT(@d, 2) +'/'+ SUBSTRING(@d, 3, 2) +'/'+ RIGHT(@d, 4) As [with slashes]
Манипулирование строками может быть неэффективным - убедитесь, что вы понимаете влияние.
Например. вы никогда бы не поместили этот код в предложение соединения ( может быть нормально на сервере отчетов).
Личное мнение: ответ от Марка Байерса STUFF(STUFF(@d, 3, 0, '/'), 6, 0, '/'))
, конечно, работает, но я думаю, что его легче поддерживать, если в вашем коде работают не администраторы баз данных. (STUFF
ref https://docs.microsoft.com/en-us/sql/t-sql/functions/stuff-transact-sql)