[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jun 2001
    Beiträge
    2.055

    Datum / Datum aus Excel

    Moin zusammen
    Wir haben in den Dateien und Schnittstellen immer wieder andere Datums darstellungen.

    JJJJMMTT,
    JJJJ
    MM
    TT oder
    JJJJ-MM-TT oder
    JJMMTT bzw
    JJ
    MM
    TT

    Um verknüpfungen der Dateien untereinander zu vereinfachen gibt es eine Datei "DatumP" die alle Möglichkeinten in einem Satz hat und vom 01.01.1900 - 31.12.2099 geht.

    Die habe ich nun erweitert um: anzahl Tage seit dem 30.12.1899, also das, was Excel liefert.
    mache ich ein
    Select dec(Date('1900-01-01') - Date('1899-12-30'), 5, 0) bekomme ich eine 2.
    Das ist richtig.
    aber bei
    Select dec(Date('1900-01-29') - Date('1899-12-30'), 5, 0) bekomme ich eine 29.
    Select dec(Date('1900-01-30') - Date('1899-12-30'), 5, 0) bekomme ich eine 100.

    So alt bin ich noch nicht, gab es damals zwischen dem 29. und 30. 1. noch andere Tage?

    Was ist das Problem? es gibt so einige sprünge in der Anzeige
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  2. #2
    Registriert seit
    Nov 2003
    Beiträge
    2.434
    100 = 1 Monat und 0 Tage?

  3. #3
    Registriert seit
    Jun 2001
    Beiträge
    2.055
    ja klar, danke
    die umsetzung in Tage fehlt.
    Danke
    Das Notwendige steht über dem technisch machbaren.
    (klingt komisch, funktioniert aber!)

  4. #4
    Registriert seit
    Aug 2001
    Beiträge
    2.947
    Wenn Du mit SQL die Differenz zwischen 2 Datums-Werten berechnest, ist das Ergebnis eine 8-Stellige Zahl das die Differenz in dem folgenden Format ausgibt: YYYYMMDD:
    1-4: 4-stelliges Jahr (Differenz in ganzen Jahren)
    5-6: 2-stelliger Monat (Rest-Differenz in ganzen Monaten)
    7-8: 2-stellige Tage (Rest-Differenz in Tagen)

    Wenn Du die Differenz zwischen 2 Datums-Werten in Tagen benötigst, muss Du beide Daten zunächst mit der Funktion DAYS() in die rechnerische Anzahl Tage seit dem 01.01.0001 konvertieren und anschließend von einander subtrahieren:

    Values(Days(YourDate1) - Days(YourDate2))
    Click image for larger version. 

Name:	SQLDates.jpg 
Views:	3 
Size:	24,3 KB 
ID:	695
    Birgitta Hauser

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

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.812
    Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
    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.947
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
    Eine DIFF-Funktion gibt es nicht (zumindest nicht auf Db2 for i)!
    Es gibt noch die eine Funktionen TimestampDiff und TimestampDiff_Big die (fast) jede beliebige Zeit-Differenz (Mikro-Sekunden, Sekunden, Minuten, Stunden, Tage, Wochen, Monate, Quartale, Jahre) zwischen 2 Zeitmarken berechnen kann.
    Allerdings gehen diese Funktionen von Schätzwerten aus, d.h. ein Jahr hat 365 Tage und ein Monat 30 Tage.

    Wenn man die Differenz in Tagen benötigt, sollte man die Funktion DAYS verwenden und beide Werte in die rechnerische Anzahl Tage seit dem 01.01.0001 konvertieren und dann beide Werte subtrahieren.
    Diese Anzahl an Tagen stimmt!

    Die Differenz-Rechnung von Zeiten ist korrekt.
    Benötigt man die Differenz in Anzahl Sekunden zwischen 2 Zeitwerten oder Zeitmarken mit dem gleichen Datum), kann man die Anzahl Sekunden (seit Mitternacht) mit Midnight_Seconds für beide Werte ermitteln und anschließend subtrahieren.
    Oder man verwendet TimestampDiff (die ein bisschen unhandlich ist, da die Differenz alphanumerisch (CHAR(22) in YYYYMMDDHHMMSS,MSMSMS (plus Vorzeichen) übergeben werden muss).

    Falls man für eine Zeitmarke in Anzahl Sekunden nach Microsoft (Sekunden seit 01.01.1970-00-00-00) kann man diese über die Funktion EXTRACT ermitteln:
    Code:
    EXTRACT(Epoch from YourTimestamp)
    Birgitta Hauser

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

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.812
    Ich habe nur abgekürzt. Ich hätte auch xxxDIFF nehmen können, wenn es dich verwirrt haben sollte;-).
    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

  8. #8
    Registriert seit
    Aug 2001
    Beiträge
    2.719
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Ich habe nur abgekürzt. Ich hätte auch xxxDIFF nehmen können, wenn es dich verwirrt haben sollte;-).
    als Programmierer kürzt man lieber nicht ab. Das verführt nur
    IBM Champion 2022, 2023, 2024, 2025, 2026
    Common Europe Advisory Council / Hall of Fame
    http://pub400.com
    visit www.POWERbunker.com for bespoke IBM i hosting

  9. #9
    Registriert seit
    Oct 2004
    Beiträge
    253
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
    Zitat Zitat von B.Hauser Beitrag anzeigen
    ..
    Allerdings gehen diese Funktionen von Schätzwerten aus, d.h. ein Jahr hat 365 Tage und ein Monat 30 Tage.
    ...
    Manchmal braucht man genau das, vor allem wenn es um Buchhaltungsdaten geht. Ich hatte mal das Thema bei einer Warenbewertung im Abgleich mit einem Wirtschaftsprüfer im Rahmen ein Übernahme.
    Da gab es dann Differenzen zwischen 30/365 und meiner genauen Rechnung.

Similar Threads

  1. Import nach Excel mit MS Query Datum formatieren
    By ElmarKraus in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 31-03-10, 08:35
  2. RPG Datum aus Excel
    By KingofKning in forum NEWSboard Programmierung
    Antworten: 7
    Letzter Beitrag: 23-07-09, 12:17
  3. Datum in Query und Übertragung nach Excel
    By BikerKini in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 19-03-07, 17:58
  4. Datum überlebt ODBC Transfer auf Excel nicht
    By jjagi in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 07-07-06, 09:29
  5. Von Excel aus Query starten und erstellen
    By smallutz in forum IBM i Hauptforum
    Antworten: 7
    Letzter Beitrag: 09-03-01, 09:50

Berechtigungen

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