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?
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.
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.