-
sql und datum ....
brauche ne abfrage auf <= morgen
habe
JJJJ 2020
MM 07
TT 10
current_date 10-07-20
(das solls mal werden)
Select * from datei where Date(jjjj*10000+mm*100+TT) <= (current_date+1 Day)
Die verschiedene Bsp hier im Forum funktionieren nicht
V7R3
Danke
Der ILEMax
-
Hier 2 Varianten, die funktionieren (vorausgesetzt JJJJ ist 4,0 und MM und DD sind 2,0 definiert):
Code:
Date(Digits(JJJJ) concat Digits(MM) concat Digits(TT) concat '000000')
Date(Right(Digits(JJJJ * 10000 + MM * 100 + TT) concat '000000', 14))
... und hier noch eine andere Variante (wenn Du mit Release 7.2 oder höher arbeitest:
Code:
Select ...
from ...
Where (JJJJ * 10000 + MM * 100 + TT) >= Dec(Current_Date + 1 Day, 8, 0);
Anstatt das Vergleichsdatum im SELECT-Statement zu berechnen, solltest Du an dieser Stelle besser eine Host-Variable mit dem berechneten Ergebnis verwenden.
Birgitta
-
Wenn man mag, kann man das ganze auch mit Regex machen:
Code:
Select ...
Where date(regexp_replace(varchar(JJJJ) || '-' || varchar(MM) || '-' || varchar(TT), '([0-9]+)-([0-9]+)-([0-9]+)', '$1-$2-$3')) <= current_date+1 Day
lg Andreas
-
Du solltest aber auch daran denken, dass bei den Regular Expressions alles in DBCLOBs konvertiert, was sich doch sehr negativ auf die Performance auswirken kann.
Ebenso sollte man auch die Double Pipe vermeiden (da nicht international!) und stattdessen CONCAT verwenden.
... es gibt natürlich noch einiige andere Möglichkeiten ein (numerisches) Datum zu konvertieren.
Birgitta
-
... wobei Lösungen mit date(Huddledatum) oder date(verhudelltes(Huddledatum)) tückisch sind, weil JJJJ und MM und TT und andere Huddledatumsvarianten kein gültiges Datum sein müssen (ich weiß: Bei uns sind die sauber, waren sie aber in > 95% der Fälle nicht!!!). Besser ist da schon eine Datumsdatei zum umsetzen aller benötigten Verhuddelungen (ist meist sogar schneller), die man zu joined (dafür sind Views da, am besten ist ein echtes Datumsfeld (kann auch für Huddle-Anwendungen zusätzlich und im LF/view weggelassen und mit Trigger gepflegt sein).
Statt der Rechnerei (10000* + 100 * +...)kann man das auch in die where clause packen )select ... where jjjjFeld < jjjjWert or (jjjjFeld = jjjjWert and mmFeld < mmWert) or (jjjjFeld = jjjjWert and mmFeld = mmWert and ttFeld <= ttWert), was für Optimizer und Query engine vorteilhaft sein könnte.
D*B
-
Oder, was wir auch schon bei Kunden eingesetzt haben, eine SQL-Function, die bei Fehlern dann NULL zurückgeben.
-
... Problem ist auch hier, dass der Optimizer nicht in die Funktion reinsehen kann. Was man hier nur tun kann, ist: die Funktion cachen lassen oder enstprechend kennzeichnen und nach Huddledatum sortieren. Will man das Resultset allerdings nach Kunde oder Artikel sortieren, geht das wieder nicht.
D*B
-
@Birgitta
Deine 2. Variante funktioniert!
Hostvariable in einer Runsql Source kann ich nicht
Danke
Der ILEMax
Similar Threads
-
By Zuther in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 06-12-18, 12:51
-
By Peet in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 06-10-17, 22:35
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 7
Letzter Beitrag: 03-05-16, 09:35
-
By weidenhammer in forum NEWSboard Programmierung
Antworten: 1
Letzter Beitrag: 07-05-15, 11:37
-
By HoScHiE in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 06-08-01, 14: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