这里的主要障碍是您的值不是一种易于使用的格式。
要执行您指定的操作,需要将值分解为其部分,再次连接然后转换。所有这些都可以在一个语句中完成。为了解释,我展示了以下步骤。
DECLARE
@someval int = 40955,
@dateval int,
@dated date
;
SELECT
-- single extraction steps
@someval % 100 AS yearval,
( @someval / 100 ) % 100 AS monthval,
( @someval / 10000 ) AS dayval
;
SELECT
--@dateval =
-- extract year and push it to front
( @someval % 100 ) * 10000
-- extract month and push into middle
+ ( @someval / 100 ) % 100 * 100
-- extract day and keep at end
+ ( @someval / 10000 )
;
SELECT
-- clip all elements into single integer
@dateval =
( @someval % 100 ) * 10000
+ ( @someval / 100 ) % 100 * 100
+ ( @someval / 10000 )
;
SELECT
-- 112 = yyyymmdd format
@dated = CONVERT( date, CAST( @dateval AS varchar(8) ), 112 )
;
SELECT
-- show as standard (format 120) date aka ISO 8601 readable
@dated AS Dated
;
但是我怀疑您从 Excel 收到的值是儒略日期。在这种情况下,以下答案将提供解决方案:
convert Excel Date Serial Number to Regular Date
请记住,在 SSIS 中,您需要将此编码包装到列或转换中。