Można użyć metody STUFF()
wstawić znaki w Twojej ciąg sformatować go na wartość SQL Server będzie w stanie zrozumieć:
DECLARE @datestring NVARCHAR(20) = '20120225143620'
-- desired format: '20120225 14:36:20'
SET @datestring = STUFF(STUFF(STUFF(@datestring,13,0,':'),11,0,':'),9,0,' ')
SELECT CONVERT(DATETIME, @datestring) AS FormattedDate
wyjściowa:
FormattedDate
=======================
2012-02-25 14:36:20.000
ten podejście zadziała, jeśli twój ciąg ma zawsze tę samą długość i format, i działa od końca łańcucha do początku, aby wytworzyć wartość w tym formacie: YYYYMMDD HH:MM:SS
W tym przypadku nie ma potrzeby oddzielania części daty, ponieważ SQL Server będzie mógł ją zrozumieć w jej formacie.
pokrewne Reading:
STUFF (Transact-SQL)
Funkcja STUFF wstawia ciąg do innego napisu. Usuwa określoną długość znaków w pierwszym ciągu w pozycji początkowej, a następnie wstawia drugi ciąg do pierwszego ciągu w pozycji początkowej.
rzeczy (character_expression rozpocząć, długość replaceWith_expression)