0

DB2日付関数でタイムスタンプを削除する方法はありますか?

データベースから日付を選択して変数に保存する DB2 select ステートメントを用意します。次に、その変数に 30 日を追加して別の db2 select のパラメーターとして使用しますが、最後に追加するタイムスタンプと一致するとは思いません。

Select business_date From DB2INST1.BusDate Where key = 0

この日付のタイムスタンプはデータベースにありませんが、最後に「12:00:00AM」が追加されています

この選択を変数に保存し、ここで別の選択で使用します

where expirdate > (DATE(@BusDate) + 30 DAYS)

次のエラーが表示されます。

{"エラー [428F5] [IBM][DB2/AIX64] SQL0245N ルーチン \"DATE\" の呼び出しがあいまいです。位置 \"1\" の引数には最適なものがありません。"} System.Exception {IBM .Data.DB2.DB2Exception}

4

3 に答える 3

3

営業日を varchar/string で選択

 Select varchar_format(business_date,'YYYY-MM-DD')

次に、これを後で使用するために実行し、日付に変換してから、日付関数を使用して 30 日を追加します。

      (DATE(to_date(@BusDate, 'YYYY-MM-DD') + 30 DAYS))
于 2012-12-13T14:28:40.057 に答える
1

試す

where expirdate > DATE(@BusDate + 30 DAYS)
于 2012-12-10T17:45:42.883 に答える
0

最初の SELECT ステートメントと 2 番目の SELECT ステートメントは同じストアド プロシージャの一部ですか? 結果の日付を.Net変数に保存していますか? .Net DateTime 変数に保存する場合は、date addition.Net コード自体で操作を行うことをお勧めします。次に、データベースに渡す前に、変数から時間の部分を削除します。

こちらもご覧ください: Datetime field overflow with IBM Data Server Client v9.7fp5

両方の SELECT ステートメントがストアド プロシージャの一部であり、.Net DateTime 変数が関与していない場合は、話は別です。

于 2013-01-08T16:02:44.153 に答える