1

SQL Server 2008、Visual Studio 2008 を使用。

データを文字列列から派生日付列に変換しようとしています。文字列は、"dd/mm/yy" (20 世紀を想定) または "dd/mm/yyyy" の 2 つの形式で指定できます。例: "02/05/12"、"23/12/02"、"13/08/2012"。

そこで、派生列に対して次のような式を試しました。

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DT_DATE)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

しかし、Visual Studioはエラーを出します:「式が無効であるか、メモリ不足のエラーがあります」.

次のようなより単純な式を受け入れます。

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)("20" + SUBSTRING(DateReceived,7,2) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))

ただし、この式は「dd/mm/yy」形式でのみ機能します。

私は何を間違っていますか?ありがとう。

4

1 に答える 1

2

気にしないでください、エラーはタイプミスによるものでした。(列名ではなく、列タイプでRTRIMを呼び出していました)。

以下の作品:

DateReceived == "" ? NULL(DT_DATE) : (DT_DATE)((LEN(RTRIM(DateReceived)) == 10 ? SUBSTRING(DateReceived,7,4) : ("20" + SUBSTRING(DateReceived,7,2))) + "-" + SUBSTRING(DateReceived,4,2) + "-" + SUBSTRING(DateReceived,1,2))
于 2012-08-02T03:33:46.860 に答える