-
ich möchte das Jahr auf einem vordefiniertem Datumsfeld ersetzen. z.B. 01.01.2000.
Also aus 2000 soll 2015 werden. Und das in free. Allerdings, lange mach ich das nicht mehr mit.
Dann halt mit Hilfsfeldern, schön geht anders.
kf
-
Wo ist das Problem? Wenn das Feld als Datumsfeld definiert ist, geht es so
Code:
C EVAL datFeld = datFeld + %YEARS(3)
Wichtig dabei ist, das Feld muss als Datumsfeld definiert sein und beim wandeln dar fauf keinem Fall die CVTOPT *DATETIME angegeben sein. Dann geht das so.
Wenn das Feld als Alpha Feld definiert ist, müsste man wie folgt vorgehen
(Es steht in einem 10A Feld 15.05.2015.
Code:
C EVAL AlphFeld = %CHAR(%DATE(AlphFLD:*EUR) + %YEARS(3):*EUR)
Wieso klappt es denn bei dir nicht? Umwandlungsfehler?
-
Und in Free siehts dann so aus (wie ich schon schrieb):
datFeld += %YEARS(3);
-
DATUM += %YEARS((2015 - %SUBDT(DATUM:*YEARS)))
 Zitat von camouflage
ich möchte das Jahr auf einem vordefiniertem Datumsfeld ersetzen. z.B. 01.01.2000.
Also aus 2000 soll 2015 werden. Und das in free. Allerdings, lange mach ich das nicht mehr mit.
Dann halt mit Hilfsfeldern, schön geht anders.
-
Vielen Dank für den vielen Feedback.
Einige Ideen sind wirklich überlegenswert, aber aus Gründen der Uebersichtlichkeit diese Lösung angewendet:
jjjj = (%subdt(%date:*YEARS)-3);
work = '01.01.' + %char(jjjj);
Work ist varchar und dann kann ich damit immer noch machen, was ich will.
Danke euch.
kf
-
Achso du willst immer den 01.01. haben....
dann ginge das so....
Code:
date1 = date1 - %YEARS(3) - %MONTHS(%SUBDT(DATE1:*M)-1) - %days(%SUBDT(DATE1:*D)-1) ;
-
Ich habe mir da mal eine "DateSerial"-Funktion gebastelt (aus VBA):
MyDate = %date('0001-01-01') + %Years(n - 1) + %Months(n - 1) + %days(n - 1);
Der Vorteil dieser Basis-Funktion ist ebenso, dass "n" einen beliebigen Wert +/-, also auch 0 enthalten kann.
Beispiel:
MyDate = %date('0001-01-01') + %Years(2018 - 1) + %Months(6 - 1) + %days(0 - 1);
Ergebnis => 2018-05-31
Und somit lässt sich deine Anforderung auch relativ leicht ohne Hilfsvariablen rechnen:
MyDate = %date('0001-01-01') + %years(%subdt(%date:*YEARS) - 2);
PS:
Die Funktion mittels dem "work = '01.01.' + %char(jjjj);" funktioniert nur, wenn das Datumformat des Programmes auf *EUR steht. Ich würde hier grundsätzlich *ISO empfehlen.
Similar Threads
-
By Peet in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 06-10-17, 23:35
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 03-05-16, 10:35
-
By camouflage in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 16-09-15, 13:28
-
By weidenhammer in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 07-05-15, 12:37
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 06-08-01, 15:47
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