在 SSIS 中,我有 int 格式的日期 2012123023 需要将其转换为 2012/12/30 23:00:00 请帮忙!
问问题
1501 次
2 回答
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
于 2012-12-18T10:36:55.620 回答
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)
于 2012-12-18T11:19:21.703 回答