Jogurt 0 Geschrieben 21. März 2014 Melden Teilen Geschrieben 21. März 2014 Guten Morgen zusammen, ich stehe hier leider vor einem kleinen Problem, da ich nicht der fitteste in sachen SQL bin. Ich soll eine Datenbankabfrage erstellen welche mir Zeiten aus einer bestehenden Datenbank ausliest.... Soweit sogut allerdings sind die Zeiten als Integer abgelegt und nicht der komplette Zeitstempel sondern nur der teil mit der Uhrzeit. z.b. 26160, das sollte 7:16 Uhr sein. Anstelle des Integer wertes hätte ich gerne die angabe als "date". ich bin wiefolgt vorgegangen um den Integer erstmals als datetime zu konvertieren: SELECT cast (Datenbank.tagesauswertung.arbeitszeit_anfang as datetime) an sich funktioniert der cast aber alle Werte sind jetzt aus dem Jahr 1964 und es ist genau 00:00:00 Uhr. 1964-01-26 00:00:00.000 Ich bitte um eure Hilfe. muss ich den integer wert erst erweitern ? als date kann ich leider nicht konvertieren da ich direkt abgewimmelt werde mit "Der Typ date ist kein definierter Systemtyp." Wenn Ihr irgendwelche Ideen oder Anregungen bzw. Links habt, immer her damit :) Viele Grüße -Jogurt Zitieren Link zu diesem Kommentar
Sunny61 806 Geschrieben 22. März 2014 Melden Teilen Geschrieben 22. März 2014 Datetime ist ohne weitere Angabe nicht hilfreich. Schau dir diese Artikel an: http://msdn.microsoft.com/de-de/library/ms187928.aspx Zitieren Link zu diesem Kommentar
Pathomorph 1 Geschrieben 2. April 2014 Melden Teilen Geschrieben 2. April 2014 Hi Jogurt Wenn du "SELECT cast (Datenbank.tagesauswertung.arbeitszeit_anfang as datetime)" ausführst, dann wird Cast die Tage ab dem 3.01.1900 als Datum ausgeben. (Excel macht das auch so ähnlich: Gibt mal in Excel 26160 in eine Zelle ein und dann als Datum formatieren. Raus kommt '15.08.1971' ) Wenn du CAST(26160 -2 as datetime) machst, erhälst du das selbe Datum. -2 da unterschiedliche Basis-Daten verwendet werden. Zum Problem: 26160 sind die Sekunden ab Mitternacht. Willst du den Dezimalwert, musst du die Zahl nur durch 3600 teilen, dann hast du 7,2666. Wenn du wirklich die reinen Uhrzeiten haben willst, dann musst du so'n Quatsch machen: SELECT CONVERT(varchar(8), dateadd(minute,Datenbank.tagesauswertung.arbeitszeit_anfang/60,'1900-01-01'),8) Das Ergebnis ist jedoch ein String(varchar) Gruß Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.