Picture of Muschelpuster
Registered 7 years 343 days
Muschelpuster Friday, 11 November 2022, 08:00 AM
converting utc_stamp to usable timestamp via SQL
I try to create some additional reports from the CDR table of the Reporting App. Unfortunately, the values of utc_stamp are not, what the name promises, I guess. It's the local time of the system and not the UTC. So I have some problems with converting it, especially with daylight saving time.
I tried a test query over the switch back to European normal time and it looks not good:
SELECT utc_stamp as unix_zeit, TO_TIMESTAMP (utc_stamp/1000) AT TIME ZONE 'UTC' as zeitstempel
 FROM public.cdrs
 where dir = 'to' and h323 = 'Muschelpuster'
 and round(utc_stamp/1000) > 1666934250
 and round(utc_stamp/1000) < 1667775599;
I have a delta of 2 hours in the summer time and 1 hour at the normal time. I guess that‘s caused by the standard timezone of the database engine.
Any ideas to format it better? WITHOUT TIMEZONE run's on error, maybe my syntax is not ok here:
SELECT utc_stamp as unix_zeit, TO_TIMESTAMP (utc_stamp/1000) WITHOUT TIMEZONE 'UTC' as zeitstempel
 FROM public.cdrs
 where dir = 'to' and h323 = 'Muschelpuster'
 and round(utc_stamp/1000) > 1666934250
 and round(utc_stamp/1000) < 1667775599;
>> ERROR: syntax error at or near "WITHOUT"

Niels
Picture of Daniel Deterding (innovaphone)
Moderator Registered 14 years 347 days
Daniel Deterding (innovaphone) Friday, 11 November 2022, 08:30 AM
Re: converting utc_stamp to usable timestamp via SQL
Hi Niels,

die Spalte utc_stamp in der Tabelle cdrs enthält definitiv einen UTC-Stamp!
  • die AP selbst arbeitet immer nur in UTC (unabhängig davon, was man im AP Manager konfiguriert!)
  • damit arbeitet auch die Datenbank nur auf UTC-Basis und weiß nichts von einer lokalen Zeitzone!
  • die Spalte utc_stamp ist ein BIGINT und enthält die Anfangszeit des Rufes in Millisekunden
  • Ich hatte gerade um 8.13 Uhr deutscher Zeit einen Ruf und habe da den Wert 1668150798000 in dieser Spalte erhalten. Teile ich den durch 1000 und gebe ihn bei unixtimestamp.com ein, erhalte ich die korrekte UTC-Zeit 7.13 Uhr
  • die Darstellung der Lokalzeit wird immer nur im UI gemacht, denn nur dort hat man das Wissen der Zeitzone, in der die Zeit betrachtet wird
  • Voraussetzung, dass das Ganze klappt, ist natürlich, dass die NTP-Zeit auf den Gateways richtig konfiguriert ist und das XML des CDRs, das beim Reporting ankommt, bereits den richtigen UTC-Wert enthält.
Zeitliche Grüße,
Daniel
← You can define your color theme preference here