Varchar to Datetime dann to Integer... time probleme
T-SQL MSSQL 2003
Hallo Zusammen
Ich möchte anmerken, dass die Datenstruktur nicht wirklich sinnvoll ist, aber ich damit leben muss...
Folgende Ausgangslage:
Ich habe ein Feld welches "Amount" heisst und vom Typ VARCHAR ist. In diesem Feld ist die Dauer von gewissen Dingen gespeichert.
Das sieht dann zum Beispiel so aus: 02:59:25 (2 Stunden, 59 Minuten, 25 Sekunden). Man beachte, dass es ein VARCHAR Feld ist.
Nun muss ich die Felder pro Kunde summieren.
Meine Überlegung ging in die folgende Richtung:
1. Wandle ich diesen VARCHAR Wert in einen Datetime Wert mit convert(datetime,'02:59:25',108). Da beim Uwandeln das Datum automatisch gesetzt wird und auf 1900-01-01 gesetzt wird, kann ich bequem die Differenz ausrechnen:
2. datediff(s,'1900-01-01',convert(datetime,'02:59:25',108))
Das klappt hervorragend und ich bekomme meinen Integer Wert den ich dann beliebig weiterverarbeiten kann.
Nun aber das "Schlimme". Es gibt Records, bei denen die Dauer im Feld "Amount" grösser ist als ein Tag Stunden hat.
So zum Beispiel: 59:48:27.
Und dies ist auch mein Problem. Wie bekomme ich das hin, dass ich auch diese Werte in Summen, etc verwenden kann?
Hoffe ihr versteht meine Ausführungen
Beste Grüsse und vielen Dank!
Hallo Zusammen
Ich möchte anmerken, dass die Datenstruktur nicht wirklich sinnvoll ist, aber ich damit leben muss...
Folgende Ausgangslage:
Ich habe ein Feld welches "Amount" heisst und vom Typ VARCHAR ist. In diesem Feld ist die Dauer von gewissen Dingen gespeichert.
Das sieht dann zum Beispiel so aus: 02:59:25 (2 Stunden, 59 Minuten, 25 Sekunden). Man beachte, dass es ein VARCHAR Feld ist.
Nun muss ich die Felder pro Kunde summieren.
Meine Überlegung ging in die folgende Richtung:
1. Wandle ich diesen VARCHAR Wert in einen Datetime Wert mit convert(datetime,'02:59:25',108). Da beim Uwandeln das Datum automatisch gesetzt wird und auf 1900-01-01 gesetzt wird, kann ich bequem die Differenz ausrechnen:
2. datediff(s,'1900-01-01',convert(datetime,'02:59:25',108))
Das klappt hervorragend und ich bekomme meinen Integer Wert den ich dann beliebig weiterverarbeiten kann.
Nun aber das "Schlimme". Es gibt Records, bei denen die Dauer im Feld "Amount" grösser ist als ein Tag Stunden hat.
So zum Beispiel: 59:48:27.
Und dies ist auch mein Problem. Wie bekomme ich das hin, dass ich auch diese Werte in Summen, etc verwenden kann?
Hoffe ihr versteht meine Ausführungen
Beste Grüsse und vielen Dank!
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 96558
Url: https://administrator.de/contentid/96558
Ausgedruckt am: 15.11.2024 um 23:11 Uhr
4 Kommentare
Neuester Kommentar
Hi
Warum speicherst du die ganze Zeit nicht einfach als Sekunden ab. Da hast du keine Probleme mit dem addieren. Also z.B. 59h 48min 27sec sind dann 215307
Denke, dass du dir damit am wenigsten Arbeit machen würdest.
Ansonsten kannst du das natürlich weiter so programmieren, dir dann den Varchar nach dem auslesen zurechtschneiden. Ist aber meiner Meinung nach nicht optimal und die andere Lösung sollte leichter sein.
Warum speicherst du die ganze Zeit nicht einfach als Sekunden ab. Da hast du keine Probleme mit dem addieren. Also z.B. 59h 48min 27sec sind dann 215307
Denke, dass du dir damit am wenigsten Arbeit machen würdest.
Ansonsten kannst du das natürlich weiter so programmieren, dir dann den Varchar nach dem auslesen zurechtschneiden. Ist aber meiner Meinung nach nicht optimal und die andere Lösung sollte leichter sein.