在SSIS中,我的日期格式为2012123023 需要将其转换为2012/12/30 23:00:00 请帮忙!
答案 0 :(得分:0)
我在SQL Server中使用过这个功能,虽然我不是SSIS专家,所以我不确定你是如何在SSIS包中实现它的。
我认为您可以在数据库中创建函数,然后从SSIS调用它。
编辑为您的测试用例工作,它确实假设该数字始终采用相同的格式。
--SELECT [dbo].[ConvertIntToDate](2012123023)
-- =============================================
-- Author: Richard Andrews
-- Create date: 12/10/2012
-- Description: Safely attempts to convert an int into a date
-- =============================================
ALTER FUNCTION [dbo].[ConvertIntToDate]
(
@InputNumber INT
)
RETURNS DATETIME
AS
BEGIN
IF @InputNumber IS NULL
BEGIN
RETURN NULL
END
DECLARE @Result DATETIME
DECLARE @StringDate NVARCHAR(50)
SET @StringDate = CAST(@InputNumber AS NVARCHAR(50))
IF LEN(@StringDate) <> 10
BEGIN
RETURN NULL
END
DECLARE @FormattedStringDate NVARCHAR(50)
SET @FormattedStringDate = SUBSTRING(@StringDate, 1, 4)
+ '-' + SUBSTRING(@StringDate, 5, 2)
+ '-' + SUBSTRING(@StringDate, 8, 2)
+ ' ' + SUBSTRING(@StringDate, 9, 2) + ':00'
IF ISDATE(@FormattedStringDate) = 0
BEGIN
RETURN NULL
END
SET @Result = CONVERT(DATETIME, @FormattedStringDate)
RETURN @Result
END
答案 1 :(得分:0)
它看起来不像有效的SQL Server日期格式(至少是SQL Server可以理解的格式)。
如果您100%确定字符串始终采用此格式,则可以执行类似
的操作DECLARE @mydate VARCHAR(20)
SET @mydate=2012123023
SELECT
CAST(
SUBSTRING(@mydate,1,4)+'-'+SUBSTRING(@mydate,5,2)+'-'+SUBSTRING(@mydate,7,2)+' '+SUBSTRING(@mydate,9,2)+':00'
AS DATETIME)