problemsolver
Goto Top

Verständnisfrage zu Transact-SQL Befehl CONVERT

Diese Frage betrifft die Konvertierung von einen Datentyp in den anderen und die damit verbundene Ausgabe in einem SQL Script unter MS-SQL Server 2005

Hallo zusammen,

ich hatte eine Frage zu einem Script, was uns von unserem Zeiterfassungsdienstleister zur Verfügung gestellt worden ist:
Genau genommen handelt es sich um diese beiden Zeilen Code:
...
set @V_von_stunde = convert(varchar,convert(integer,(@V_bucheinz_von_zeit_min / 60)))
set @V_von_minute = convert(varchar,convert(integer, (@V_bucheinz_von_zeit_min - ((@V_bucheinz_von_zeit_min / 60)*60))))
...

Zur Verständnis:
@v_von_stunde vom Typ varchar(02)
@v_von_minute vom Typ varchar(02)
@v_bucheinz_von_zeit_min vom Typ Integer


In der Variable @v_bucheinz_von_zeit_min ist definitiv jedesmal (geprüft) ein Wert enthalten. (Bespielsweise 481) Dieses repräsentiert die "Anstempelzeit" eines Mitarbeiters.

Logischerweise, und das ist meine Verständnisfrage, müsste allerdings in @v_von_minute immer der Wert "0" (s.o.) nach der Berechnung/ KOnvertierung enthalten sein, da für mich (x-((x/60)*60)) stets 0 (egal bei welchem x face-wink ) ergibt. Allerdings ist auch in dieser Variable DEFINITIV der richtige Wert enthalten!

Mit dem Bespiel oben: 481 bei @bucheinz_von_zeit_min ergibt sich für @v_von_stunde=8 und für @v_von_minute=1. (480 Minuten=8 Stunden...)

Wäre wirklich sehr dankbar für jede Hilfe bei der Klärung dieser Frage!!!

Gruß

Markus

@edit:
Problem gelöst! Microsoft hat unverständlicherweise den Sinn der Mathematik verdreht!

Laut MSDN Eintrag und mehrmaligem Lesen ist mir Folgendes bei der Division zwei integer Werte aufgefallen:
siehe http://msdn.microsoft.com/de-de/library/ms175009.aspx
<zitat>
Wenn ein ganzzahliger dividend-Wert durch einen ganzzahligen divisor-Wert geteilt wird, ist das Ergebnis ein ganzzahliger Wert, dessen Bruchstellen abgeschnitten werden.
<zitat>
In diesem Fall bedeutet das: 481:60 = 8,01.... Das ,01 wird abgeschnitten und es bleibt lediglich die 8 übrig, da zwei INTEGER Werte (Dividend und Divisor) durch einander geteilt werden.

Gruß

markus

Content-ID: 95010

Url: https://administrator.de/contentid/95010

Ausgedruckt am: 24.11.2024 um 06:11 Uhr