1

MS SQL Server 2014 から (ServiceNow) MySQL データベースに OpenQuery() 経由で接続しています。24 時間以上前のレコードを除外したいと考えています。静的な日付を設定すると、予想される数千行が返されます。ただし、計算フィールドを使用しようとすると、実行されますが、ゼロ レコードが返されます。

select number, sys_updated_on 
from OPENQUERY(ServiceNowUAT, 
'Select number, sys_updated_on
FROM DATABASE.[SCHEMA].[TableName]
WHERE sys_updated_on  > DATEADD(d, -2, NOW()) ')

DATE_SUB()関数やその他のさまざまな形式の構文も使用しました。計算された日付を日付、日時、タイムスタンプ、varchar などとしてキャストしてみました。MS Query と SSIS でもこれを試しました。sys_updated_on > DATEADD(d, -2, NOW())「 」セグメントを追加すると、このクエリや他の同様のクエリですべての結果が返されません。

sys_update_on フィールドをタイムスタンプとしてキャストすると機能しますが、処理時間が約 10 秒から 30 分以上かかり、もちろん理想的ではありません (テーブルには数百万行あります)。

sys_update_onフィールドの形式は " "2015-02-10 10:24:17.000000です。

もう 1 つの関連する部分は、MySQL ではなく、ServiceNow が提供する ODBC ドライバーを使用して、ServiceNow MySQL データベースからプルしていることです。私はデータ マップを持っていないので、データ型が何であるかはわかりません。この時点で、それはある種の文字列であり、真のタイムスタンプ/日時ではないと推測していますが、これを確認することはできません.

これを機能させる方法を知っている人はいますか?結果を返す b. 実行するのに30分かかりませんか?

4

1 に答える 1