Другое решение с DATETIMEFROMPARTS
без использования строковых функций:
DECLARE @MyAwkwardDateTime BIGINT = 20080910173240
SELECT
GeneratedDateTime = DATETIMEFROMPARTS(
T.Year,
T.Month,
T.Day,
T.Hour,
T.Minute,
T.Second,
0)
FROM
(
SELECT
Year = CONVERT(INT, @MyAwkwardDateTime / 10000000000),
Month = @MyAwkwardDateTime / 100000000 % 100,
Day = @MyAwkwardDateTime / 1000000 % 100,
Hour = @MyAwkwardDateTime / 10000 % 100,
Minute = @MyAwkwardDateTime / 100 % 100,
Second = @MyAwkwardDateTime % 100
) AS T
Результат:
GeneratedDateTime
2008-09-10 17:32:40.000
Нет необходимости в подзапросе, я просто использовал его, чтобы его было легче видеть каждый разчасть.