SNOWMAN Geschrieben 18. Oktober 2004 Teilen Geschrieben 18. Oktober 2004 Hi, hab n einfachen Select der zwei Uhrzeiten voneinander abzieht. Das Prob ist, das Ergebnis dieser Rechnung is ne Floatzahl, ich hätte aber lieber ne Uhrzeit, sicher könnt ich Excel die Arbeit übernehmen lassen, aber das is ja nich Zweck der Aufgabe, soll ja was lernen, daher wüsst ich gern ne lösung dafür. select vstart, to_char(vstart, 'hh24:mi:ss') Beginn, to_char(vende, 'hh24:mi:ss')Ende, vende - vstart, ... vende und vstart sind komplette DATE-Felder vstart-vende liefert mir nen Floatwert a la 0,00130787037037037 was dann 00:01:53 als Zeit darstellt (laut excel) Mach ich to_date(vende - vstart, 'hh24:mi:ss') sagt er: ORA-01858: a non-numeric character was found where a numeric was expected Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
piomode1 Geschrieben 19. Oktober 2004 Teilen Geschrieben 19. Oktober 2004 Hi, SNOWMAN! Nun, wenn Du etwas lernen sollst, dann lerne: Du weißt, wie 18:00Uhr dezimal dargestellt wird? --> 0,75 Dann weißt Du, wie 06:00Uhr dargestellt wird: --> 0,25 12:00Uhr ist dann folgerichtig = 0,5. Heißt: Jede Uhrzeit eines Tages kann dezimal im Intervall [0; 1[ dargestellt werden. (23:59:59 = 0,999988425925926) Wie wird gerechnet? Um zu ermitteln, wie der Dezimalwert (Dw) für z.B. x-Uhr (Runde Stunden ohne Minuten: xStd) ist, wird die Formel Dw = 1 / 24 * xStd verwendet. Beispiel: Gegeben: 21 Stunden (xStd) Gesucht: Dezimalwert (Dw) Dw = 1 / 24 * 21 (= 1 / 4 * 3 = 3 / 4) = 0,75 --> Dezimalwert = 0,75 Mit ein wenig umstellen kann aus dem gegebenen Dezimalwert die Stunden (xStd) ermitteln: xStd = 24 * Dw Beispiel: Gegeben: 0,75 (Dw) Gesucht: Stunden (xStd) xStd = 0,75 * 24 = 6 --> 6 Stunden Wie die Minuten zu berechnen sind? Das überlasse ich Dir. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mme Geschrieben 19. Oktober 2004 Teilen Geschrieben 19. Oktober 2004 Oder du nimmst die Funktion to_dsintervall (funktioniert so nur wenn du dich innerhalb eines Tages bewegst.... Folgende Funktion gibt die Zeit seit 00:00:00 Uhr an... (Ich weiß das kann man auch einfacher haben, aber ich habe das so getestet da ich keine Tabelle aufbauen wollte mit Testdaten...) select to_char(trunc(sysdate) + TO_DSINTERVAL('0 '|| to_char(sysdate,' hh24:mi:ss')) ,'hh24:mi:ss') from dual; Für deinen Fall müsste das dann ungefähr folgendermassen aussehen...: select vstart, to_char(vstart, 'hh24:mi:ss') Beginn, to_char(vende, 'hh24:mi:ss')Ende, to_char(vende - TO_DSINTERVAL('0 '|| to_char(vstart,' hh24:mi:ss')) ,'hh24:mi:ss') from .... Schöne Grüße.... mme Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SNOWMAN Geschrieben 22. Oktober 2004 Autor Teilen Geschrieben 22. Oktober 2004 cool, danke für die gute erklärung!!!!!!! das werd ich gleich mal in meine sql dokumentation übernehmen hat auch super funktioniert! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.