-
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!)
-
100 = 1 Monat und 0 Tage?
-
ja klar, danke
die umsetzung in Tage fehlt.
Danke
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
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))
-
Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
-
 Zitat von Fuerchau
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)
-
Ich habe nur abgekürzt. Ich hätte auch xxxDIFF nehmen können, wenn es dich verwirrt haben sollte;-).
-
 Zitat von Fuerchau
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
-
 Zitat von Fuerchau
Wobei die DIFF-Function generell mit 30 Tagen je Monat rechnet.
 Zitat von B.Hauser
..
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
-
By ElmarKraus in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 31-03-10, 08:35
-
By KingofKning in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 23-07-09, 12:17
-
By BikerKini in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 19-03-07, 17:58
-
By jjagi in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 07-07-06, 09:29
-
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
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks