-2

SSIS では、int 形式の日付 2012123023 を 2012/12/30 23:00:00 に変換する必要があります。助けてください!

4

2 に答える 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 に答える