Datum von YYDDDSSSSS in DDMMYYYYhhmmss wandeln
Hallo zusammen,
habe eine Access-2007-Datenbank, in der ich das Fertigungsdatum nach Eingabe des aufgedruckten Fertigungsdatums wie oben genannt umwandeln möchte. D.h.
Eingabe der 10 Ziffern erfolgt im Feld [FD_Motor_org] im Format YYDDDsssss.
Im Feld [FD] soll es nach Aktualisierung dann als DD.MM.YYYY hh:mm:ss abgelegt werden, so dass es jeder lesen kann
Habe bereits eine Excel-Datei für Umrechnung, allerdings wird es dort als einzelne Felder ausgegeben.
Julianisches FD aufgelöstes Datum
Tag Zeit Datum Zeit (hh mm ss)
12242 18755 29.08.2012 5 12 35
Wobei
A3 ist die Eingabe der 5 Ziffern für den Tag (YYDDD)
B3 ist dei EIngabe der 5 Ziffern für die Zeit in Sekunden (sssss)
C3=DATUM((WENN((0+LINKS(A3;2))<50;2000;1900)+LINKS(A3;2));1;RECHTS(A3;3))
D3=ABRUNDEN(UMWANDELN(B3;"sec";"hr");0)
E3=ABRUNDEN(UMWANDELN(B3-60*60*D3;"sec";"mn");0)
F3=B3-60*60*D3-60*E3
Habe mittlerweile 2 Tage dafür verwendet mich durchzugoogeln und finde keinen Hinweis der mir Verständlich genug ist.
Wäre super wenn mir jemand von Euch helfen könnte.
Merci und Gruß
Andreas
Edit:
Aktuelle Darstellung in Access
Bild der Excel-Berechnung
habe eine Access-2007-Datenbank, in der ich das Fertigungsdatum nach Eingabe des aufgedruckten Fertigungsdatums wie oben genannt umwandeln möchte. D.h.
Eingabe der 10 Ziffern erfolgt im Feld [FD_Motor_org] im Format YYDDDsssss.
Im Feld [FD] soll es nach Aktualisierung dann als DD.MM.YYYY hh:mm:ss abgelegt werden, so dass es jeder lesen kann
Habe bereits eine Excel-Datei für Umrechnung, allerdings wird es dort als einzelne Felder ausgegeben.
Julianisches FD aufgelöstes Datum
Tag Zeit Datum Zeit (hh mm ss)
12242 18755 29.08.2012 5 12 35
Wobei
A3 ist die Eingabe der 5 Ziffern für den Tag (YYDDD)
B3 ist dei EIngabe der 5 Ziffern für die Zeit in Sekunden (sssss)
C3=DATUM((WENN((0+LINKS(A3;2))<50;2000;1900)+LINKS(A3;2));1;RECHTS(A3;3))
D3=ABRUNDEN(UMWANDELN(B3;"sec";"hr");0)
E3=ABRUNDEN(UMWANDELN(B3-60*60*D3;"sec";"mn");0)
F3=B3-60*60*D3-60*E3
Habe mittlerweile 2 Tage dafür verwendet mich durchzugoogeln und finde keinen Hinweis der mir Verständlich genug ist.
Wäre super wenn mir jemand von Euch helfen könnte.
Merci und Gruß
Andreas
Edit:
Aktuelle Darstellung in Access
Bild der Excel-Berechnung
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 191987
Url: https://administrator.de/contentid/191987
Ausgedruckt am: 22.11.2024 um 04:11 Uhr
9 Kommentare
Neuester Kommentar
HI Andreas,
Ein Datum im Format YYDDD?
Excel schreibt da als Ausgabe 12Samstag oder wie?
Oder sind es die Tage ab 1. Januar, die gemeint sind?
Und die Sekunden ab 0 Uhr?
Bei den Tagen musst du aufs Schlatjahr achten.
Aber bei einem festen Zahlenformat kannst natürlich mit LINKS und RECHTS arbeiten.
Willst du eine Excel-kompatible Ausgabe oder eine lesbare Darstellung erreichen?
Ausgang -> Ziel
1202407210 -> 24.01.2012 02:00:10
Jahr 12
Tage 024
Sekunden 07210
G3=D3&":"&E3&":"&F3 bringt dir die Uhrzeitanzeige im gewohnten Format
der Rest passt ja schon.
Die Funktion TEXT hilft noch weiter bei der Formatierung.
Gruß
Netman
Ein Datum im Format YYDDD?
Excel schreibt da als Ausgabe 12Samstag oder wie?
Oder sind es die Tage ab 1. Januar, die gemeint sind?
Und die Sekunden ab 0 Uhr?
Bei den Tagen musst du aufs Schlatjahr achten.
Aber bei einem festen Zahlenformat kannst natürlich mit LINKS und RECHTS arbeiten.
Willst du eine Excel-kompatible Ausgabe oder eine lesbare Darstellung erreichen?
Ausgang -> Ziel
1202407210 -> 24.01.2012 02:00:10
Jahr 12
Tage 024
Sekunden 07210
G3=D3&":"&E3&":"&F3 bringt dir die Uhrzeitanzeige im gewohnten Format
der Rest passt ja schon.
Die Funktion TEXT hilft noch weiter bei der Formatierung.
Gruß
Netman
Moin.
Hier etwas Code, der Dir weiterhelfen könnte... (Me.YYDDDSSSSS ist Dein Feld)
Du musst Dich noch um Ausnahmen kümmern!
Hier etwas Code, der Dir weiterhelfen könnte... (Me.YYDDDSSSSS ist Dein Feld)
Du musst Dich noch um Ausnahmen kümmern!
Dim YY As Integer
Dim DDD As Integer
Dim SSSSS As Integer
Dim jahr As Integer
Dim stunden As Integer
Dim minuten As Integer
Dim sekunden As Integer
YY = CInt(Mid(Me.YYDDDSSSSS, 1, 2))
DDD = CInt(Mid(Me.YYDDDSSSSS, 3, 3))
SSSSS = CInt(Mid(Me.YYDDDSSSSS, 6, 5))
If YY < 50 Then
jahr = 2000 + YY
Else
jahr = 1900 + YY
End If
sekunden = SSSSS Mod 60
minuten = ((SSSSS - sekunden) / 60) Mod 60
stunden = ((SSSSS - sekunden) / 60) \ 60
MsgBox DateAdd("y", DDD, "01.01." & jahr) & " " & stunden & " " & minuten & " " & sekunden
Moin andreas-san,
willkommen im Forum.
Da du ja den Beitrag noch nicht auf "Gelöst" gesetzt hast, erlaube mir bitte eine Nachfrage,
Du schriebst:
Da entgleisten mir etwas die Gesichtszüge... weil: zwei Felder mit identischen Informationen (nur unterschiedlich formatiert) in demselben Datensatz...
--> ist nicht gut. Die ersten drei Coddsbrocken , die bei jedem Datenbanker automatisch hochpoppen sind: "Redundanz", "nicht widerspruchsfreie Daten", "Äh bäh"
Um dieses (ja ohnehin errechnete, also aus anderen Infos abgeleitete) hybsch formatierte Feld anzuzeigen, brauchst du es doch nicht abzuspeichern. Ist doch nur eine andere Darstellung des "FD_Motor_org"-Feldes.
Was spricht denn dagegen, es direkt mit dem SELECT-Statement zu erzeugen?
Alles für ein Timestamp-Format der Form "TT.MM.JJJJ hh:mm:ss" hast du doch.
Und mit den ACCESS-SQL-Funktionen DateSerial() und Format() ist es doch kein Hexenwerk.
Dann kannst du die 20 VBA-Zeilen auch einsparen und hast vor allem die Datums/Zeit-Information in EINEM Feld und nicht in zweien.
Grüße
Biber
willkommen im Forum.
Da du ja den Beitrag noch nicht auf "Gelöst" gesetzt hast, erlaube mir bitte eine Nachfrage,
Du schriebst:
Eingabe der 10 Ziffern erfolgt im Feld [FD_Motor_org] im Format YYDDDsssss.
Im Feld [FD] soll es nach Aktualisierung dann als DD.MM.YYYY hh:mm:ss abgelegt werden, so dass es jeder lesen kann
Im Feld [FD] soll es nach Aktualisierung dann als DD.MM.YYYY hh:mm:ss abgelegt werden, so dass es jeder lesen kann
Da entgleisten mir etwas die Gesichtszüge... weil: zwei Felder mit identischen Informationen (nur unterschiedlich formatiert) in demselben Datensatz...
--> ist nicht gut. Die ersten drei Coddsbrocken , die bei jedem Datenbanker automatisch hochpoppen sind: "Redundanz", "nicht widerspruchsfreie Daten", "Äh bäh"
Um dieses (ja ohnehin errechnete, also aus anderen Infos abgeleitete) hybsch formatierte Feld anzuzeigen, brauchst du es doch nicht abzuspeichern. Ist doch nur eine andere Darstellung des "FD_Motor_org"-Feldes.
Was spricht denn dagegen, es direkt mit dem SELECT-Statement zu erzeugen?
Alles für ein Timestamp-Format der Form "TT.MM.JJJJ hh:mm:ss" hast du doch.
Und mit den ACCESS-SQL-Funktionen DateSerial() und Format() ist es doch kein Hexenwerk.
Dann kannst du die 20 VBA-Zeilen auch einsparen und hast vor allem die Datums/Zeit-Information in EINEM Feld und nicht in zweien.
Grüße
Biber