0

データをエクスポートする直前に VB.NET コードを実行する必要がある SSIS スクリプト コンポーネントがあります。

このスクリプト コンポーネントに、タイムスタンプ列の各行をフィードしています。(データ型 DT_DBTIMESTAMP)

日付の入力スタイルは次のとおりです。2012-09-12 16:34:12

これを変更するにはVB.NETコードが必要なので、次の形式で表示されます。09/12/2012 04:34:12 PM

重要な 2 つのポイントは、値が 1 桁の場合はすべての値にゼロを埋め込む必要があることと、時間の値はすべて AM/PM を含む 12 時間形式にする必要があることです。つまり、スタイルは次のようにする必要があります。 {0:MM/dd/yyyy hh:mm:ss tt}

残念ながら、私は VB.NET のスキルが非常に限られており、SO または MSDN でこの例をまだ見つけていません。私の検索から、DateTime オブジェクトの新しいスタイルを作成してから、カスタムの日付形式などを使用できるように見えますか? ここで何をすべきか、一生わからない。

スクリプト コンポーネントから自動生成されたコードは次のとおりです。

Imports System
Imports System.Data
Imports System.Math
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper

Public Class ScriptMain
    Inherits UserComponent

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)
        '
        ' Add your code here
        '
    End Sub

End Class

だから私は次のようなことをすることができます:

String.Format("{0:MM/dd/yyyy hh:mm:ss tt}", Row.[DateTimeColumn].toString())

わからない...ここで完全に失われました。SSIS または VB.NET でスクリプト コンポーネントを実際に使用するのは初めてです。

ヘルプ????:(

4

1 に答える 1

1

データをオブジェクトとして取得する場合は、Date単純にメソッドを呼び出してToStringフォーマット文字列を渡すことができます。次に例を示します。

Dim d As Date = columnValue
Dim formatted As String = d.ToString("MM/dd/yyyy hh:mm:ss tt")

ただし、日付を文字列として取得する場合は、Date再フォーマットする前にまずオブジェクトに解析する必要があります。

Dim s As String = columnValue
Dim d As Date = Date.ParseExact(s, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture)
Dim formatted As String = d.ToString("MM/dd/yyyy hh:mm:ss tt")
于 2012-09-14T13:12:38.190 に答える