Bestimmte werte in ein Datum zusammenfassen

M.Pohlan

Benutzer
Beiträge
5
Guten Tag zusammen,

Ich möchte us einer Seriennummer Automatisch das Herstellungsdatum FIltern und es als datum Eintragen zu vereinfachung für die Mitarbeiter.

Die Nummer ist zb TE1912110317 Die ersten beiden Ziffern sind Jahr dann 2 Ziffern Monat und 2 Ziffern Tag und die Letzten vier interessieren in erster Linie nicht.
Ich habe eine Abfrage schon getestet und möchte sie als Datetime eintragen. Meine Abfrage

select substring(RP._TE ,7,2) AS Tag, substring(RP._TE ,5,2) AS Monat, substring(RP._TE ,3,2) AS Jahr from RMAVORGANG AS RV inner join RMADETAILS AS RP on RV.Nummer = RP.Nummer where RV.Nummer = 'R211246'

und das Möchte ich in ein vorhandenes feld mit update einfügen meine Idee war

update RMADETAILS
set Datum = '(select substring(_TE ,7,2) from RMADETAILS where Nummer = 'R211246')-(select substring(_TE ,7,2) from RMADETAILS where Nummer = 'R211246')-(select substring(_TE ,7,2) from RMADETAILS where Nummer = 'R211246')'
where Nummer = 'R211246'

Aber das Funktioniert nicht.
 
Werbung:
Du solltest erstmal ein Select bauen, das die richtigen Daten ausspukt.
Dann kannst Du ein Update daraus machen.

Mein Tipp auch ohne dass Du eine Fehlermeldung genannt hast. MS SQL kann Deine Datumsarithmetik nicht verarbeiten.
 
ich würde das eher als VIEW machen, dann ist es nicht so redundant.

Code:
edb=*# create table mpohlan(id int generated always as identity primary key, sn text);
CREATE TABLE
edb=*# create view view_mpohlan as select id, sn, to_date(substring(sn,3,6),'YYMMDD')::date from mpohlan;
CREATE VIEW
edb=*# insert into mpohlan (sn) values ('TE1912110317');
INSERT 0 1
edb=*# select * from view_mpohlan ;
 id |      sn      |       to_date       
----+--------------+---------------------
  1 | TE1912110317 | 2019-12-11 00:00:00
(1 row)
 
Werbung:
Guten Morgen,

Ich glaube ich habe mich echt blöd ausgedrückt und zu wenig Informationen hergegeben ,

Also mein Ziel ist das ich aus der TE Nummer Mir das datum Heraus hole und Automatisch für die Lesbarkeit in das Feld Fertigungsdatumplatine eintrage. Maske.PNG

Dazu habe ich diese Abfrage erstellt die mir die Sache schonmal Als Tag, Monat und Jahr ausgibt

SELECT Substring(RP._te, 7, 2) AS Tag,
Substring(RP._te, 5, 2) AS Monat,
Substring(RP._te, 3, 2) AS Jahr
FROM rmavorgang AS RV
INNER JOIN rmadetails AS RP
ON RV.nummer = RP.nummer
WHERE RV.nummer = 'R211246'

Das Where sieht am Ende eigentlich dann so aus WHERE RV.nummer = :nummer ( bedeutet das er diesen wert aus dem Aktuellen beleg Herraus nimmt)

Die Tabelle Hat diesen Inhalt
Tabelle_neu.png
 
Zurück
Oben