0

最近、Cognos Report Studio の作業を開始しました。4 つのテーブル結合を持つ T-sql コードがありました。SQL ツールボックスをクエリ エクスプローラーにドラッグして、コードを Cognos Report Studio に貼り付けただけです。レポートは正常に実行されました。しかし今、このレポートを毎月 1 日に生成し、満期日をその月の 1 日から 30 日/31 日の間に設定したいと考えています。例: 5 月 1 日にレポートを受け取った場合、満期日の範囲が 5 月 1 日から 5 月 31 日までのデータのレコードを提供する必要があります。既に作成した SQL コードに以下のコードを追加してみました。

WHERE 
CURR_MATURITY_DATE BETWEEN (DATEADD(MM, 0, GETDATE()), 0) AND (DATEADD(MM, 0, GETDATE()) +1, 0) -1)

このコードは機能しません。Pl 注: 列 CURR_MATURITY_DATE の形式は、mm/dd/yyyy です。コードを正常に実行するために必要な変更を教えてください。

4

2 に答える 2

1

WHERE 句でこれらを試してください。

月の最初の日の場合:select DATEADD(mm, DATEDIFF(mm,0,getdate()), 0)

月の最終日:select dateadd(ms,-3,DATEADD(mm, DATEDIFF(m,0,getdate() )+1, 0))

ここで見つけてください。すべてが説明されています。

于 2014-04-30T19:04:05.163 に答える
1

Cognos には、月の追加機能があります。(少なくとも、Cognos 10 ではそうです。) 式エディターの [関数] タブで、[ビジネスの日付/時刻関数] の下にあります。これは _add_months と呼ばれます。したがって、関数は最終的に次のようになりますbetween (_add_months(1,current_date))

SQL Server 関数を使用することもできます。これらのテキスト パラメータ (MM など) を中括弧で囲む必要があります。だからあなたはで終わるでしょうdateadd({MM},0,current_date)

今月の最初の日に、TSQL で次のように使用します。DATEADD(MONTH, DATEDIFF(MONTH, 0, GETDATE()), 0) Cognos では、構文は次のようになります。DATEADD({MONTH}, DATEDIFF({MONTH}, 0, GETDATE()), 0)

于 2014-04-30T20:21:14.283 に答える