Announcement

Collapse
No announcement yet.

Mit Uhrzeiten rechnen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit Uhrzeiten rechnen

    Guten Tag,

    ich müsste mit Personalzeiten rechnen, die in der Datenbank als VARCHAR2(6) gespeichert sind. Das Format ist hhmmss, also 112200 für 11 Uhr 22 Minuten und 0 Sekunden.

    Ich kann dieses Format in das Date Format umwandeln und damit rechnen

    to_date ( "ZeitEnde", 'HH24MISS') - to_date ( "ZeitAnfang", 'HH24MISS')

    also z.B. die Zeitdifferenz der zwei Zeiten ermitteln. Wie kann ich diese Zeiten jetzt wieder in das Datenbankformat umrechnen?

    Und wie ist das, wenn jetzt die Zeiten über Mitternacht gehen? Ich habe ein Feld in dem vermerkt ist, ob es über Mitternacht geht. Länger als 1 Tag (24h) gibt es nicht.

    Wie funktioniert das dann, wenn ich viele dieser Zeiten zusammen rechne ... kann ich die ganzen Date Formate zusammen zählen und am Ende dann in ein lesbares Format konvertieren (Wochen, Tage, Stunden, Minuten)?

    Danke,
    Peter

  • #2
    Hallo, Peter,

    vielleicht hilft dir das weiter:

    [highlight=sql]SELECT TO_DATE('201222','hh24miss') - TO_DATE('184720','hh24miss') zeit FROM dual;
    SELECT CAST(CAST(TO_DATE('201222','hh24miss') AS TIMESTAMP)
    -CAST(TO_DATE('184720','hh24miss') AS TIMESTAMP)
    AS INTERVAL DAY(3) TO SECOND(0)) zeit FROM dual;
    SELECT CAST(CAST(TO_DATE('184720','hh24miss')+1 AS TIMESTAMP)
    -CAST(TO_DATE('201222','hh24miss') AS TIMESTAMP)
    AS INTERVAL DAY(3) TO SECOND(0)) zeit FROM dual;
    SELECT EXTRACT(HOUR FROM CAST(CAST(TO_DATE('184720','hh24miss')+1 AS TIMESTAMP)
    -CAST(TO_DATE('201222','hh24miss') AS TIMESTAMP)
    AS INTERVAL DAY(3) TO SECOND(0))) Stunden FROM dual;[/highlight]
    Um deine Mitternachtsproblematik zu erschlagen, kannst du statt der +1, die ich oben verwendet habe, decode verwenden, also z. B. +decode(mitternacht_jn,'J',1,0).

    Vielleicht ist auch der Link interessant für dich:

    http://asktom.oracle.com/pls/asktom/...ID:96012348060

    Gruß

    Ralf

    Comment

    Working...
    X