[NEWSboard IBMi Forum]

Thema: Timestamp

  1. #1
    Registriert seit
    Jan 2001
    Beiträge
    832

    Timestamp

    Hallo zusammen,

    aus einer Anwendung bekommen wir solche Timstampfelder
    Hat jemand eine Idee ob diese Feldinhalte mit SQL übernommen werden können ?


    "2022-04-08T12:09:49+0200"


    Gruß
    Michael

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Dies ist der neue "Timestamp with Timezone".
    D.h, der 1. Teil ist die UTC-Zeit "2022-04-08T12:09:49", der 2. Teil ist die Zeitzone "+0200", also derzeit MESZ.
    Dafür gibts dann in SQL "TIMESTAMP(n) with timezone" sowie die Umrechnung localtime(), die den Timstamp dann umrechnet.
    Das "T" ist dann durch ein Leerzeichen zu ersetzen.

    Im Ilerpg kannst du aber die mitgelieferte Zeitzone auch selber auf den Timestamp draufrechnen.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Jan 2001
    Beiträge
    832
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Dies ist der neue "Timestamp with Timezone".
    D.h, der 1. Teil ist die UTC-Zeit "2022-04-08T12:09:49", der 2. Teil ist die Zeitzone "+0200", also derzeit MESZ.
    Dafür gibts dann in SQL "TIMESTAMP(n) with timezone" sowie die Umrechnung localtime(), die den Timstamp dann umrechnet.
    Das "T" ist dann durch ein Leerzeichen zu ersetzen.

    Im Ilerpg kannst du aber die mitgelieferte Zeitzone auch selber auf den Timestamp draufrechnen.


    SQL ist der Hit

    :-)


    Gruß
    Michael

  4. #4
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Dies ist der neue "Timestamp with Timezone".
    D.h, der 1. Teil ist die UTC-Zeit "2022-04-08T12:09:49", der 2. Teil ist die Zeitzone "+0200", also derzeit MESZ.
    Dafür gibts dann in SQL "TIMESTAMP(n) with timezone" sowie die Umrechnung localtime(), die den Timstamp dann umrechnet.
    Das "T" ist dann durch ein Leerzeichen zu ersetzen.
    Ich habe gerade ein ähnliches Problem. Ich muss Daten, die als RFC 3339 Timestamp kommen, in unseren IBM i timestamp konvertieren bzw. unseren Timestamp in das RFC Format bringen.

    Gibt es da eine SQL Syntax "TIMESTAMP(n) with timezone" ? Bei mir klappt das nicht. Oder habe ich die Antwort falsch verstanden?

    So etwas geht:
    values timestamp('2022-09-07 17:16:12.123');

    Folgendes geht nicht:
    values timestamp('2022-09-07T17:16:12.123Z');
    Gibt es dafür eine SQL-Interpretierungsfunktion?

    Dieter

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Jo: timestamp(replace(trim(char(var), 'Z'), 'T', ' '))
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    1. Timestamp(n) with timezone gibt es NICHT in Db2 for i! (nur auf den anderen Db2s)
    2. Die Konvertierung geht auch einfacher:
    Code:
    Values Timestamp(Translate('2022-09-07T17:16:12.123Z', ' ', 'TZ'));
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    Herzlichen Dank an euch beide.

    Das Z steht ja für Zulu Time (also die Greenwich Zeit). In der Regel werden wir die Ortszeit aus Deutschland bekommen. Die hätte dann anstatt des Z den Zeitoffset hinten dran: '2022-09-07T17:16:12.123+02:00'

    Es gibt da dafür nichts "Fertiges" in SQL? Ich muss also selber aktiv werden und mit timestamp und timezone rechnen?

    Es geht mir auch um die Ausgabe (als JSON). Unsere Kollegen hätten gerne einen Timestamp der obigen Form (also mit Zeit-Offset). Den kann ich natürlich über eine Funktion "basteln". Aber ich hatte gehofft, dass IBM da inzwischen etwas bereitgestellt hat. Angeblich ist
    RFC 3339 ja der weltweite Standard (wegen Internet).

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.869
    Nein, was fertiges gibt es auf der IBM i nicht (zumindest nicht im Standard-Umfang der Db2 for i).
    Vielleicht findest Du etwas Open Source.
    ... ansonsten selberbasteln.
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 4. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  9. #9
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Zumal die Zeitzone aktuell nur per Systemwert auslesbar ist.
    Der Timestamp auf der IBM i ist immer localtime!
    Um also die UTC-Zeit zu bekommen musst du eine external Function schreiben, die den aktuellen Offset aus dem Systemwert ausliest und die UTC dann ausrechnet.
    Ggf. kannnst du so eine eigene Cast-Funktion schreiben, die das Ergebnis als CHAR-Feld zurückgibt.

    Ich verstele den Hype um den Timestamp with Timezone sowieso nicht.
    Wenn ich in der DB grundsätzlich UTC speichere, kann ich ja jederzeit den Timestamp mit "+00:00" ausgeben. Die Anzeige der Localtime ist ja sowieso immer Sache des Clients, da dessen Zeitzone für die Darstellung gilt. Es interessiert mich halt nicht, wie die Zeitzone mal war als die Zeit eingestellt wurde.

    Ich habe mal für Infor-XPPS das Problem "mehrere Zeitzonen auf der IBM i" lösen müssen, was aktuell nur mit den C-UnixAPI's und den Locale-Einstellungen je Job funktioniert.
    SQL und ILERPG interessieren sich dafür allerdings nicht.

    Ach ja: Und das Problem der doppelten/fehlenden Zeiten für Differenzrechnung und Sortierungen bei der Zeitumstellung gibts bei Verwendung von UTC nicht.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  10. #10
    Registriert seit
    Jan 2012
    Beiträge
    1.102
    OK,
    vielen Dank. Ihr habt mir, wie immer, sehr weiter geholfen!

  11. #11
    Registriert seit
    Oct 2013
    Beiträge
    171
    In einer global vernetzten Welt machen Timestamps mit Offset schon Sinn, zumindest, wenn Menschen involviert sind.
    Das macht das Arbeiten mit Timestamps der eigenen Zeitzone nicht schwieriger als vorher; man kann aber trotzdem mit der ganzen Welt missverständnisfrei solche Daten austauschen.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.206
    Auch das ist nur bedingt richtig.
    Klar weiß ich dann in welcher Zeitzone die Zeit enstanden ist, um damit ggf. aber zu arbeiten wandle ich diese in die Localtime meiner Zeitzone um.
    Was mache ich dann also mit der gelieferten Zeitzone im Sinne der Verarbeitung?

    Und was die Verständigung beim Datenaustausch angeht, so haben wir bei der Betrachtung von Zeitzonen immer schon in UTC Daten ausgetauscht.

    In der globalen Welt tausche ich auch schon lange Dateien aus. Deren Datumangaben (create, lastaccess, lastwrite) sind schon immer in UTC und der User sieht bei der Betrachtung dann seine LocalTime.
    In Mails werden die Zeiten schon immer in UTC übertragen.
    usw. usf.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. SQL Timestamp
    By itec01 in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 25-02-21, 07:22
  2. CAST TIMESTAMP
    By tarkusch in forum NEWSboard Programmierung
    Antworten: 4
    Letzter Beitrag: 26-07-17, 17:34
  3. Timestamp über ODBC
    By Wwilson in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 24-06-14, 17:26
  4. Query und Feld mit TIMESTAMP oder aktuelle Uhrzeit / Datum
    By Franz.Rung in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 04-11-13, 17:54
  5. ILE Cobol: accept aTimestamp from timestamp?
    By rebe in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 26-09-01, 09:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •