probleme mit werktagen



  • hi

    ich suche schon ne weile nach ner funktion für werktagsberechnung zwischen zwei tagen... (ich weiß ich sollte mir wahrscheinlich keine fertigen lösungen anbieten lassen) ... da ich nich der sql-pro bin aber das für ne c++ anwendung brauch...

    die funktion wird in ms-sql festgesetzt



  • für MSSQl ist die MSDN zu empfehlen

    in deinem Fall hilft die Funktion DatePart um den Wochentag zu bekommen, genauer

    select datepart(weekday,datumsspalte) from tabelle
    


  • hier... meine lösung...

    set ANSI_NULLS OFF
    set QUOTED_IDENTIFIER OFF
    GO
    ALTER FUNCTION [dbo].[fn_dat_HolenAnzahlArbeitstage]
    (
    @tdatBeginn DATETIME,
    @tdatEnde DATETIME
    ) 
    -- Anzahl von Arbeitstagen/Werktagen zwischen zwei Terminen berechnen.
    RETURNS INT
    AS
    
    BEGIN
    
    DECLARE @intErgebnis INT
    DECLARE @intAnzahlArbeitstage INT
    DECLARE @intAnzahlWochen INT
    DECLARE @intSamstag INT
    DECLARE @intSonntag INT
    DECLARE @intWochentagBeginn INT
    DECLARE @intWochentagEnde INT
    DECLARE @intKorrektur INT
    DECLARE @NumWeeks INT
    
    SET @intSamstag = 7
    SET @intSonntag = 1
    
    IF @tdatBeginn > @tdatEnde BEGIN
    SELECT @intErgebnis = 0 END
    ELSE BEGIN
    -- Anzahl Tage im Zeitraum bestimmen, die nicht Samstag oder Sonntag sind
    SELECT @intKorrektur = 0
    
    SELECT  @intWochentagBeginn = DATEPART(dw, @tdatBeginn)
    IF @intWochentagBeginn = 6 SELECT @tdatBeginn = @tdatBeginn + 2
    IF @intWochentagBeginn = 7 SELECT @tdatBeginn = @tdatBeginn + 1
    
    SELECT  @intWochentagEnde = DATEPART(dw, @tdatEnde)
    IF @intWochentagEnde = 6 SELECT @tdatEnde = @tdatEnde - 1
    IF @intWochentagEnde = 7  SELECT @tdatEnde = @tdatEnde - 2
    
    select @NumWeeks = DateDiff(ww, @tdatBeginn, @tdatEnde)
    SELECT @intAnzahlArbeitstage = @NumWeeks * 5 + DATEPART(dw, @tdatEnde) - DATEPART(dw, @tdatBeginn)
    
    SELECT @intErgebnis = @intAnzahlArbeitstage
    END
    
    RETURN @intErgebnis
    
    END
    


  • so anderes problem... wie gesagt... ich bin noch sehr sql-beweandert.. wie mahc ich aus der oben genannten funktion eine tabelle... es kommen noch weitere zählungne von tagen hinzu... soll so aussehen das... eine spalte mit schrift "werktage" und zb. eine weitere mit "gesamttage" oder "anzahlwochen" oder so ... jemand der mir helfen kann?



  • du kannst Tabellen-Trigger verwenden um die Werktage automatisch zu ermitteln, sobald Daten in eine (die gleiche oder eine andere) Tabelle geschrieben/geändert/gelöscht werden

    da deine letzte Anfrage aber irgendwie unverständlich war, solltest du vielleicht nochmal eindeutig erklären was du machen willst



  • jo mein standard ausdrucksproblem wenn ich zu schnell schreibe 🙂

    aber habs geregelt... besser gesagt anders geregelt.. danke für die aufopferung

    cya
    da vo


Log in to reply