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