0

MSSQL Server からデータを取得するためのクエリ ブロックがあります。クエリには、毎日のフィードをインポートするために毎日変更する必要があるハードコーディングされた日付値が含まれています。この実行を自動化する必要があります。現在、クエリを実行するために cloverETL を使用しています。クエリは次のとおりです (sharepoint アクティビティ データを取得するためのクエリです)。

use
DocAve_AuditDB;
DECLARE
@ParameterValue VARCHAR(100),
@SQL
VARCHAR(MAX)
SET
@SQL = STUFF((SELECT 'UNION ALL SELECT COL_ItemTypeName, COL_UserName, COL_MachineIp, COL_DocLocation, DATEADD(SECOND, COL_Occurred / 1000, ''19700101 00:00'') as Date_Occurred, COL_EventAction FROM '+ TABLE_NAME + ' WHERE DATEADD(SECOND, COL_Occurred / 1000, ''19700101 00:00'') BETWEEN '+ '''20120515'''+ 'AND' + '''20120516'''+ 'AND ' + 'COL_ItemTypeName='+ '''Document''' AS 'data()'
FROM INFORMATION_SCHEMA.TABLES
WHERE
TABLE_NAME LIKE '%2012_05%'
FOR
XML PATH('')),1,10,'')
EXEC
(@SQL)

上記のブロックでは、TABLE_NAME LIKE パラメータ、つまり %2012_05% を現在のデータから取得した変数にし、また between 句の日付値にしたい

BETWEEN '+ '''20120515'''+ 'AND' + '''20120516''' は、今日の日付-1 と今日の日付になります

これを処理するための小さなJavaプログラムを作成する必要がありますか、それともクエリ自体で直接行うことができますか? はいの場合、どのように?

前もって感謝します

4

2 に答える 2

1

GETDATE()またはを使用CURRENT_TIMESTAMPして、現在の日付 (および時刻) を取得します。

書式指定子とともに使用CONVERT()して112、現在のタイムスタンプを として書式設定された文字列に変換しますYYYYMMDD

DATEADD()日付/時刻の計算 (1 日を引くなど) に使用します。

SUBSTRING()フォーマットされた日付文字列から一部を減算して、フォーマットに再配置するために使用し%YYYY_MM%ます。

于 2012-05-31T22:52:12.017 に答える
0

または、DBInputTable でインライン ctl 表記を使用できます。

SELECT 'UNION ALL SELECT COL_ItemTypeName, COL_UserName, COL_MachineIp, COL_DocLocation, DATEADD(SECOND, COL_Occurred / 1000, ''19700101 00:00'') as Date_Occurred, COL_EventAction FROM `date2str(today(), "yyyy_MM")` WHERE DATEADD(SECOND, COL_Occurred / 1000, ''19700101 00:00'') BETWEEN '+ '''`date2str(today(), "yyyyMMdd")`'''+ 'AND' + '''`date2str(dateAdd(today(),1,day), "yyyyMMdd")`'''+ 'AND ' + 'COL_ItemTypeName='+ '''Document''' AS 'data()'
于 2013-06-21T08:19:18.633 に答える