Gelöst JTL Workflows - kein Timestamp (Unixzeit) verfügbar

STREETBOOSTER

Aktives Mitglied
18. Dezember 2020
41
7
Hallo,

wir stehen gerade vor der Aufgabe im Rahmen eines Workflows eine externe REST API anzusprechen. Das funktioniert soweit auch ganz gut, das große Problem aber ist, das wir in der REST API die aktuelle Zeit übergeben müssen. Und diese müssen im üblichen Format Timestamp (Unixzeit) übergeben werden.

Ich finde allerdings keine Möglichkeit, an diesen Wert zu kommen. Entweder bekomme ich formatierte Daten ("01.01.2023 15:37") oder Ticks. Und Ticks in Timestamp umzurechnen ist eher ungenau und scheitert dann auch an Int32 / Int64 Themen. Über den Umweg eines SQL Query
SELECT DATEDIFF(SECOND,'1970-01-01', GETUTCDATE()) AS 'UNIXTIMESTAMP';
geht das zwar, aber das fährt ja unnötig Abfragen auf dem Server.

Es wäre also sehr praktisch, wenn man bei den Variablen unter "Datum" auch ein "JetztInTimeStamp" hätte, und nicht nur "Jetzt" und "JetztInTicks". Denn Timestamp / Unixzeit ist ja in der IT kein ganz unübliches Format. Gerne dann auch direkt als Int64, damit es kein Jahr 2038 Problem gibt.
 
Zuletzt bearbeitet:

kelvin.

Sehr aktives Mitglied
15. Februar 2023
168
65
Frankfurt
Das gibt mir ja nur die Sekunden der aktuellen Uhrzeit zurück. Das ist ja nur eine Formatierungsfunktion. Mir ist auch in anderen Sprachen nicht bekannt, das man damit einen Timestamp erzeugen kann. Der Input in diese Funktion ist ja eben ein Timestamp. Im Falle von JTL dann eher Ticks.
%S ist die Sekunde der aktuellen Uhrzeit. %s sind die Sekunden seit 1970.

Edit : Funktioniert nicht. Habe es eben getestet. Funktioniert nur in Liquid
 

smartclouds

Aktives Mitglied
13. Februar 2021
15
1
hat jemand eine Idee, wie man das lösen kann, dass man Datum zum epoch time/timestamp formatiert?
 

STREETBOOSTER

Aktives Mitglied
18. Dezember 2020
41
7
MIr hat nur der Trick über MySQL geholfen:

Code:
{% capture query -%}
SELECT DATEDIFF(SECOND, '1970-01-01', '{{ Vorgang.Auftrag.Erstelldatum}}') AS 'UNIXTIMESTAMP';
{% endcapture -%}
{% assign tsAuftrag = query | DirectQueryScalar -%}

{{ Vorgang.Auftrag.Erstelldatum}} kannd abei durch beliebiges ersetzt werden. Wenn du denn aktuellen TimeStamp brauchst:


Code:
{% capture query -%}
SELECT DATEDIFF(SECOND, '1970-01-01', GETDATE()) AS 'UNIXTIMESTAMP';
{% endcapture -%}
{% assign tsJetzt = query | DirectQueryScalar -%}
 

Ähnliche Themen