0

VB.NET で手動で作成された DATE データ型を TIMESTAMP データ型を持つ DB2 列に取得することができないため、今は本当にイライラしています。

これを処理するためにいくつかの異なる方法を試しましたが、何をしても「SQL0180N: 日時値の文字列表現の構文が正しくありません」というエラーが常に発生します。

String から DATE への変換を処理するアプリケーションの部分は次のとおりです。

Dim neuesDatum As Date
neuesDatum = CDate(jahr & "-" & "0" & monat & "-01 00:00:00")

変換の文字列は次のようになります: 2013-01-01 00:00:00

また、日付のドイツ語形式 (01.01.203) を試し、最後の部分 (00:00:00) なしで文字列を使用しようとしましたが、何をしても常に同じ結果になります。

ストアド プロシージャを使用して、データをテーブルに挿入します。日付は、パラメータ「SollMonat」として配信されます。

CREATE OR REPLACE PROCEDURE "ADDON21C"."STP_BEITRAGSSATZ_ADD"
(
        IN @Id BIGINT,
        IN @Typ VARCHAR(100),
        **IN @SollMonat TIMESTAMP,**
        IN @G VARCHAR(100),
        IN @F VARCHAR(100),
        IN @H VARCHAR(100),
        IN @U1 VARCHAR(100),
        IN @U2 VARCHAR(100),
        IN @U1erhoeht VARCHAR(100),
        IN @U1ermaessigt VARCHAR(100),
        IN @RV VARCHAR(100),
        IN @ALV VARCHAR(100),
        IN @P VARCHAR(100),
        IN @RVgf VARCHAR(100),
        IN @KVgf VARCHAR(100),
        IN @ZusatzKV VARCHAR(100),
        IN @ZusatzPV VARCHAR(100),
        IN @Inso VARCHAR(100),
        OUT @result BIGINT
)
LANGUAGE SQL
SPECIFIC SQL12080109131643
BEGIN

        IF @Id IS NULL OR @Id = 0
        THEN
                INSERT INTO "ADDON21C".BS
                (Typ, Sollmonat, G, F, H, U1, U2, U1erhoeht, U1ermaessigt)
                VALUES
                (@Typ, @SollMonat, @G, @F, @H, @U1, @U2, @U1erhoeht, @U1ermaessigt);
                 SET @result = IDENTITY_VAL_LOCAL();
        END IF;

END

データテーブル内の「Sollmonat」のデータ型も TIMESTAMP です。

みんな、ここで私を助けてくれたらとてもうれしいです。私は完全にアイデアがありません。いいえ、テーブルに日付を VARCHAR として保存することはできません。データベースに保存することは可能かもしれませんが、同じ問題があると思います。

前もって感謝します!

@Steveクラスをデータテーブルにマップできるようにするいくつかのクラスを自分で作成するため、全体がさらに混乱するだけですが、これがこれを台無しにするものではないことを確認してください。たとえば、Date.Now のように、手動で作成されていない日付を使用すると、正常に動作します。

4

1 に答える 1

1

これを試す方法はいくつかあります。Date1つは、パラメーターがタイムスタンプであり、タイプを渡すことを具体的に言っています。

cmdDB2.Parameters.Add("@SollMonat", DB2Type.Timestamp).Value = neuesDatum 

もう 1 つの可能性は、日付の正しい文字列表現を定義してから を使用すること.ToString()です。以下にいくつかのフォーマット文字列を示します。データベースのデータ型に一致するものを使用してください。

Private Const DB2_TSTAMP = "yyyy-MM-dd-HH.mm.ss.ffffff"
Private Const DB2_DATE = "MM/dd/yyyy"

cmdDB2.Parameters.Add("@SollMonat", neuesDatum.ToString(DB2_TSTAMP))

これらのオプションは、過去に私のために働いていました。タイム・スタンプのフォーマット・ストリングは常に機能します (タイム・スタンプの ODBC 標準です) が、日付のフォーマット・ストリングは場所によって異なる場合があります。 Information Center のこの記事を参照してください

于 2013-02-14T14:04:23.847 に答える