Используя те же значения WITH
, что и @Fred, я придумал:
WITH x(decvalue) AS ( VALUES (DECIMAL(1132009.00)),(DECIMAL(7152004.00)),(DECIMAL(11012005.00)) )
SELECT TO_DATE(CHAR(CAST(decvalue AS DECIMAL(8,0))), 'MMDDYYYY')
FROM x
Предполагается, что ваши входные значения не будут длиннее 8 цифр (2 для месяца, 2 для дня, 4 для года), в противном случае вы получите ошибку переполнения при приведении. Он также потерпит неудачу, если не будет хотя бы какого-то значения для каждого месяца, дня и года (например, 00002011
не будет работать, но 01012011
будет).