-
jjjj + mm +tt mit sql 5 tage drauf
Hi *all
ich habe in einer Datei das Datum in form von 3 Feldern.
jjjj, mm und tt
in einer View will ich nun auf das Datum 5 Tage drauf rechnen.
Das ergebnis brauche ich aber als ein Numerisches Feld jjjjmmtt
bisher habe ich ...
date((digits(jjjj) CONCAT '-' CONCAT digits(mm) CONCAT '-' CONCAT
digits(tt))-DAYS(5)
Das bekomme ich z.zt. nicht zurück in ein jjjjmmtt Feld
Danke
Der ILEMax
-
Wiederum per Cast:
dec(replace(char(DateAusdruck, iso), '-', ''), 8, 0)
Zur Datumsrechnung gilt:
+/- n days | months | years
-
Sofern Du auf Release 6.1 oder höher bist, kannst Du den ganzen Ausdruck (zusammensetzen Felder, Konvertieren in Datum, 5 Tage addieren, Konvertieren in Numerisches Datum) auch wie folgt aufbauen:
Code:
Dec(VarChar_Format(Timestamp(Digits(Jahr) concat
Digits(Monat) concat
Digits(Tag) concat '000000') + 5 Days,
'YYYYMMDD'),
8, 0)
Birgitta
-
ok, danke.
habe mein -days(5) in -5 days geändert.
Code:
dec(replace(char(
date((digits(jjjj) CONCAT '-' CONCAT digits(mm) CONCAT '-' CONCAT
digits(tt)))-5 DAYS
), '-', ''), 8, 0) AS DATUM,
geht aber nicht.
Ursache schein zu sein, das
Code:
SELECT date(digits(JJJJ) CONCAT '-' CONCAT digits(MM) CONCAT
'-' CONcat digits(TT))-5 DAYS AS DATUM,
JJJJ*10000+MM*100+TT FROM DATEI
BRINGT
also richtig gerechnet aber Datum in Form tt.mm.jj
der replace und das Dec 8,0 kann da ja nicht funktionieren
noch ne Idee?
Der ILEMax
-
ok, das ISO kam aber später oder??
(Danke)
-
Fast gut
leider gibt es auch jjjj mm und tt Felder die leer sind.
Um das abzufangen habe ich nun
Code:
SELECT dec(coalesce(replace(char( date(digits(jjjj) CONCAT '-'
CONCAT digits(mm) CONCAT '-' CONcat digits(tt))-5 DAYS ,
iso), '-', ''), 0), 8, 0) AS DATUM, jjjj*10000+mm*100+tt
FROM datei
drumherum gebaut
das bringt aber bei den leeren jjjj Feldern zrotzdem in der Anzeige nur +++++
-
auch in Birgittas version
Code:
SELECT Dec(coalesce(VarChar_Format(Timestamp(Digits(jjjj) concat
Digits(mm) concat Digits(tt) concat '000000')+ 5 Days ,
'YYYYMMDD'), 0), 8, 0) , jjjj*10000+mm*100+tt FROM datei
-
Ungültige Daten kann man da leider nicht in ein Datum umsetzen, dass kannst du nur mit einem Case-Ausdruck eingrenzen.
Zusätzlich passiert ja noch folgendes:
Im STRSQL, also Dialog, schafft SQL es diese Daten dann zu überlesen.
Im embedded SQL geht das nur, wenn du NULL-Anzeiger verwendest, ansonsten kommt ein Fetch nicht über den fehlerhaften Satz hinaus.
Solange du sicher sein kannst, dass in den Daten, wenn sie <> 0 sind, nur gültige Daten drinn stehen, kannst du einen Case-Ausdruck verwenden:
case
when JJJJ <> 0 and MM <> 0 and TT <> 0
then DateAusdruck
else NULL
end
Auch hier benötigst du natürlich bei embedded SQL einen NULL-Anzeiger.
PS:
ISO kam tatsächlich erst beim Edit, das das Datumformat bei mir in STRSQL immer auf *ISO steht.
-
Ach übrigens:
man kann auch folgendes kodieren:
date('0001-01-01') + (JJJJ - 1) years + (MM - 1) months + (TT - 1) days
Das liefert dir dann immer ein gültiges Datum.
-
Sowas hatte ich auch kurz überlegt aber ...
knallt der nicht, wenn ich - 5 days rechne ?
Der ILEMax
-
Nun ja, dann nimm ein anderes Jahr und rechne dieses wieder runter:
date('1900-01-01') + (case JJJJ when 0 then 0 else -1900 end) years + (MM - 1) months + (TT - 1) days
Ob das dann ein sinnvolles Datum ist ...
-
knallt auch ....
Code:
SELECT dec(coalesce(replace(char( date('0001-01-01') +
(dec(digits(jjjj), 4, 0)-1) years +
(dec(digits(mm), 2, 0)-1) month +
(dec(digits(tt), 2, 0)-1) days - 5 days, iso
), '-', ''), 0), 8, 0) AS DATUM, jjjj*10000+mm*100+tt from datei
Similar Threads
-
By christian_lettner in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 16-11-06, 10:15
-
By FNeurieser in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 11-10-06, 14:53
-
By malzusrex in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 19-09-06, 11:04
-
By Kaufmann in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 28-06-06, 14:11
-
By loeweadolf in forum NEWSboard Programmierung
Antworten: 2
Letzter Beitrag: 01-06-06, 09:43
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