Announcement

Collapse
No announcement yet.

Zeitberechnung mit SQL

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

  • Zeitberechnung mit SQL

    Hallo - ich möchte Arbeitszeiten berechnen. In der Datenbank werden die Kommen - zeiten und die Gehen-Zeiten gespeichert. Der Rest wird über eine Abfrage berechnet. Mit:


    Code:
    SELECT     id_anwesenheit, datum, kommen, gehen, DATEDIFF(hour, kommen, gehen) AS Arbeitszeit
    FROM         dbo.tbl_anwesenheit
    bekomme ich aber nur eine Arbeitszeit von 9 Stunden angezeigt - also offenbar aufgerundet. Wie bekomme ich die Abfrage dazu mir als Arbeitszeit in Stunden exakte Dezimalzahlen mit zwei Stellen nach dem Komma zu liefern.

    Gleich noch eine Frage: ich habe das Datum und möchte mir daraus über Datepart den Wochentag anzeigen lassen - als Montag, Dienstag usw. Datepart bringt aber nur 1-7. Wie kann ich denn das machen ?

    Ich danke Euch !

    Mark B

  • #2
    Hi,

    1.) in Minuten rechnen (mi)
    , durch 60 teilen und das Ergebnis formatieren

    Select Round(DATEDIFF(mi, kommen, gehen)/60,2)

    2.) Die Parameter für Datepart sind weekday und Dein Datum.
    Zuletzt editiert von frauwue; 23.08.2011, 11:02. Reason: Ergänzt
    docendo discimus

    Comment


    • #3
      Hallo queckjunior,

      deine Spalten "kommen" und "gehen" sind vom Typ "TIME" oder?
      Die Differenz kann erst berechnet werden, indem die Spalten zuerst in ein "DATETIME" umwandelst,
      dann berechnest und anschließend wieder in ein TIME konvertierst.

      PHP Code:
      SELECT CASTCAST(gehen AS DATETIME) - CAST(kommen AS DATETIME) AS TIME) AS Arbeitszeit 
      Stimmt, die Funktion DATEPART gibt nur eine Zahl zurück.
      Mit DATENAME wird der Wochentag als Namen angezeigt.
      PHP Code:
      SELECT DATENAME(weekdaygetdate()) 
      Gruß
      knoxyz
      Und Falk Prüfer sprach: Formatierung von SQL in Beiträgen

      Comment


      • #4
        @knoxyz,

        meine sql-server Datenbank hat keinen Typ TIME sondern nur Datetime.
        Außerdem bekommst Du mit getdate() nur das aktuelle Datum. Ich nehme an, dass
        Queckjunior das Datum aus seinen Tabellen haben will also:
        SELECT DATENAME(weekday, datum) from dbo.tbl_anwesenheit.

        Gruß
        docendo discimus

        Comment

        Working...
        X