Dynamische filteren op datum in Startup SQL

Ik wil graag data ontsluiten uit een exact-online database, maar wil dit graag op een gedoseerde manier doen door alleen de data op te halen van een beperkte periode. Hiervoor zou ik graag een periode aangeven die relatief tot de huidige datum staat. Ik heb het op verschillende manieren geprobeerd door gebruik te maken van GETDATE() (zie voorbeeld query hieronder), maar telkens krijg ik geen resultaten.

SELECT *
FROM  ExactOnlineREST.SalesOrder.SalesOrders
WHERE DeliveryDate = DATEADD('day', 2, GETDATE())

(bovenstaande query zou dus alleen de data van over 2 dagen moeten laten zien)

Mijn vraag is hoe dit in de Startup SQL gedaan kan worden (of dat dit misschien op een andere manier beter kan zoals een filter op de OData)? Is het uberhaupt mogelijk om op tabelniveau te filteren in de startup SQL van een gehele database, en zoja, hoe?

ps. Dit is puur om het aantal requests op de Exact-online api te beperken. Vandaar ook nog de bijkomende vraag, is het vanuit invantive mogelijk om te zien hoeveel requests er al gemaakt zijn/nog gemaakt kunnen worden?

Filter

Invantive SQL gebruikt server-side filtering en kan daardoor - waar technisch mogelijk - filters over de gehele verwerkingsketen meenemen (meer uitleg over server-side filtering staat bijvoorbeeld bij How to filter data from OData query on Azure Data Factory? - 3 van forums).

Specifiek voor Exact Online is het - afhankelijk van de toepassing - mogelijk om de genoemde tabel te gebruiken of de incrementele varianten (zie Snel en met minder API-calls Exact Online uitlezen met de incrementele "sync API"-tabellen).

De getoonde query zal zelden tot nooit resultaten opleveren. De evaluatie van dateadd('day', 2, getdate()) levert meestal een tijdstip op gedurende de dag dat niet kan voorkomen.

Een betere benadering is bijvoorbeeld:

select *
from   ExactOnlineREST.SalesOrder.SalesOrders
where  DeliveryDate = trunc(sysdate) + 2

of in het kader van defensief programmeren nog beter:

select *
from   ExactOnlineREST.SalesOrder.SalesOrders
where  DeliveryDate >= trunc(sysdate) + 2
and    DeliveryDate <  trunc(sysdate) + 3

Dit kan met een where-clause, een filter via OData, een custom view en waarschijnlijk nog op andere manieren doorgegeven worden.

Merk op dat sysdate de lokale tijd weergeeft van het apparaat waar Invantive SQL draait. Dit kan een andere tijdzone of zomertijd zijn. sysdateutc geeft altijd de UTC-tijd weer. Het veld ServerUtcOffset in de tabel me geeft de UTC-offset aan van Exact Online.

Uitgevoerde API-calls

Het aantal uitgevoerde API-calls is te vinden:

Deze vraag is automatisch gesloten na 2 weken inactiviteit. Het laatste gegeven antwoord is gemarkeerd als oplossing.

Gelieve een nieuwe vraag te stellen via een apart topic als het probleem opnieuw optreedt. Gelieve in de nieuwe vraag een link naar dit topic op te nemen door de URL er van in de tekst te plakken.