Om invloed Power BI en OData uit te sluiten, is dit het bijbehorende UniversalSQL-statement:
select to_char(date, 'YYYYMMDD HH24MISS') date_c
, to_char(createdAt, 'YYYYMMDD HH24MISS') created_at_c
, to_char(updatedAt, 'YYYYMMDD HH24MISS') updated_at_c
, id
from Bouw7.Resource.EquipmentBookings@bow
where id = 18460
met als resultaat:
date_c |
created_at_c |
updated_at_c |
06/25/2020 22:00:00 |
06/26/2020 12:27:14 |
06/26/2020 12:27:14 |
Dit is eigenaardig, want het teken ‘/’ komt niet voor in de to_char
. De onderliggende JSON vanuit Bouw7 is:
{ "id":18460
, "equipment":
{ ...
}
, "quantity":"123.45"
, "more":"values"
, "date":"2020-06-26T00:00:00+02:00"
, "more":"values"
, "createdBy":
{ "id":12345
, "username":"john.doe@acme.com"
}
, "createdAt":"2020-06-26T12:27:14+00:00"
, "updatedBy":
{ "id":12345
, "username":"john.doe@acme.com"
}
, "updatedAt":"2020-06-26T12:27:14+00:00"
}
De vanuit Bouw7 API-server aangeleverede waarde veld date
is dus 26 juni 2020 00:00 in de tijdzone +02:00 zoals CET (Europe/Amsterdam).
Bij nadere controle blijkt dat de drie datumvelden varchar2
zijn:
select name
, database_data_type
from systemtablecolumns@datadictionary
where table_name='EquipmentBookings'
and name in ('date', 'createdAt', 'updatedAt')
Dit is niet totaal ongebruikelijk; Simplicate heeft ook een dergelijke anamolie, maar de conversie naar datum/tijd formaat met het teken ‘/’ is dat wel. Waarschijnlijk converteert Power BI het automatisch terug omdat Power BI en Invantive UniversalSQL beiden op dezelfde technologie gebaseerd zijn.
Na verdere analyse is een systematische fout in de metadata van Bouw7 gevonden. Een workaround is opgenomen in de Bouw7-driver hiervoor en een bug report is ingediend bij Bouw7.
De wijziging zal opgenomen worden in een volgende zodra de regressietests succesvol doorlopen zijn. Het betreft een “breaking change”: het datatype van datumvelden zal wijzigen van tekst in datum/tijd.
Dit kan correcties vereisen in de verwerking van Bouw7-data via Power BI of andere platformen waarbij het datatype niet automatisch geconverteerd wordt. De correctie zal naar verwachting uitsluitend nodig zijn op tabellen die een veld bevatten met datuminformatie.