<< Click to Display Table of Contents >> Navigation: Datumformate und Zeitzonen > Datumformate und Zeitzonen auf Script-Ebene |
Auf der SQL-Ebene, d.h. in SQL-Scripten (SQL-APIs, Sichten, Trigger, gespeicherte Prozeduren…) müssen immer das deutsche Datumformat und die deutsche Zeitzone genutzt werden.
Für die Umwandlung sind folgende Funktionen vorgesehen:
T-SQL Funktion fnc_cmdb_DatetimeToLocal(<datetime-Spalte>, <Datumformat-Schlüssel>, <Zeitzone-Identifikator>)
Diese Funktion konvertiert eine Datetime-Spalte in das lokale Datumformat und die lokale Zeit
Parameter:
<datetime-Spalte>: Spalte oder andere Quelle vom Typ datetime
<Datumformat-Schlüssel>: Aktuelles Datumformat, $-Variable $_DATEFMTKEY
<Zeitzone-Identifikator>: Aktuelle Zeitzone, $-Variable $_TZIDENT
Beispiel: Folgende SQL-API gibt die letzten 50 Zeilen der Tabelle CNLOG mit aktuellem Datumformat und aktueller Zeitzone zurück:
select top 50 CNLOG_ID, dbo.fnc_cmdb_DatetimeToLocal(CNLOG_CreateDate,'$_DATEFMTKEY','$_TZIDENT') as local_fmt from cnlog order by cnlog_id desc
|
Beachten Sie, dass die $-Variablen $_DATEFMTKEY und $_TZIDENT innerhalb der Apostrophen genutzt werden.
T-SQL Funktion fnc_cmdb_DateToLocal(<datum>,<Datumformat-Schlüssel>)
Diese Funktion ist ähnlich wie die Funktion fnc_cmdb_DatetimeToLocal, jedoch ist die Quelle das Datum ohne Zeit (als Zeichenfolge) und der Zeitzonen-Identifikator wird nicht genutzt.
JS-Funktionen convertToServerFormatAsString und convertToServerFormatAsJSDate
Diese Funktionen sind in individuellen Masken für die Elemente vom Typ „Datum und Zeit“ und „Datum ohne Zeit“ aktiv.
Die Funktion convertToServerFormatAsString konvertiert den aktuellen Wert des Elements in die deutsche Zeitzone und das deutsche Datumformat und gibt das Ergebnis als Zeichenfolge zurück. Wenn der Wert in dem Element dem aktuellen Datumformat nicht entspricht, wird eine leere Zeichenfolge zurückgegeben.
Die Funktion convertToServerFormatAsSJSDate konvertiert aktuellen Wert des Elements in die deutsche Zeitzone und das deutsche Datumformat und gibt das Ergebnis als Javascript-Date-Objekt zurück. Wenn der Wert in dem Element dem aktuellen Datumformat nicht entspricht, wird eine Javascript-null zurückgegeben.
Die Funktionen convertToServerFormatAsString und convertToServerFormatAsSJSDate konvertieren immer aus dem lokalen Format (d.h. dem Format, das der Webbenutzer eingestellt hat) und der lokalen Zeit in das deutsche Format und die deutsche Zeit.
Beispiel: Wenn ein Webbenutzer mit ISO-Format und Sydney-Zeitzone "2012-06-25 12:00" eingibt, gibt RU.VCOL_ABCD.convertToServerFormatAsString() die Zeichenfolge "25.06.2012 04:00:00" zurück.
D.h:
a) immer Format TT.MM.JJ hh:mm:ss (= in SQL direkt nutzbar)
b) immer in deutsche Zeit umgerechnet (Sydney ist am 25.6.2020 um 8 Stunden voraus)
Ähnlich arbeitet die Funktion convertToServerFormatAsSJSDate, wobei hier nur die Zeitzone umgerechnet wird (Javascript-Date-Objekt hat kein eigenes Format) und die einzelnen Bestandteile (Jahr, Monat,...) bequem zur Verfügung stehen.