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分かかりませんか?