Từ 1 tới 4 trên tổng số 4 kết quả

Đề tài: Cách tính số ngày làm việc trong tháng

  1. #1
    Ngày gia nhập
    03 2011
    Bài viết
    7

    Mặc định Cách tính số ngày làm việc trong tháng

    Em có bài tập tính lương cho 1 cửa hàng.Tính lương theo hệ số và ngày công.
    Có 1 vướng mắc là ngày công đươc tính bằng cách:

    Lương CB x Hệ số / Ngày làm trong tháng

    Ngày làm trong tháng em không biết tính thế nào nữa. Vì nó dao động từ 20--> 24

    Mong các pro viết giúp e hàm tính luôn.

    Đầu vào: Tháng, Năm
    Đầu ra: Số ngày làm (trừ t7,chủ nhật)

    Em xin thanks trước

  2. #2
    Ngày gia nhập
    10 2011
    Bài viết
    51

    Có tháng, năm -> sẽ biết được số ngày trong tháng, số ngày thứ bảy và chủ nhật trong tháng -> biết được số ngày làm việc. Gợi ý cho bạn suy nghĩ và nên cố gắng viết chứ

  3. #3
    Ngày gia nhập
    07 2010
    Bài viết
    138

    Code:
    DECLARE @my int
    DECLARE @myDeduct int
    DECLARE @day INT
    DECLARE @mydate DATETIME
    
    SET @mydate = getdate()
    
    SET @myDeduct = 0
    SET DateFirst 1 -- Set it monday=1 (value)
    
    --Saturday and Sunday on the first and last day of a month will Deduct 1
    IF (DATEPART(weekday,(DATEADD(dd,-(DAY(@mydate)-1),@mydate))) > 5)
    SET @myDeduct = @myDeduct + 1
    
    IF (DATEPART(weekday,(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))) > 5)
    SET @myDeduct = @myDeduct + 1
    
    SET @my = day(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))
    
    select (((@my/7) * 5 + (@my%7)) - @myDeduct) as Working_Day_per_month

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Trích dẫn Nguyên bản được gửi bởi leminh_005 Xem bài viết
    Code:
    DECLARE @my int
    DECLARE @myDeduct int
    DECLARE @day INT
    DECLARE @mydate DATETIME
    
    SET @mydate = getdate()
    
    SET @myDeduct = 0
    SET DateFirst 1 -- Set it monday=1 (value)
    
    --Saturday and Sunday on the first and last day of a month will Deduct 1
    IF (DATEPART(weekday,(DATEADD(dd,-(DAY(@mydate)-1),@mydate))) > 5)
    SET @myDeduct = @myDeduct + 1
    
    IF (DATEPART(weekday,(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))) > 5)
    SET @myDeduct = @myDeduct + 1
    
    SET @my = day(DATEADD(dd,-(DAY(DATEADD(mm,1,@mydate))),DATEADD(mm,1,@mydate)))
    
    select (((@my/7) * 5 + (@my%7)) - @myDeduct) as Working_Day_per_month
    Ở đây thuộc về C#, chuyên gia SQL bót lộn chuồng rồi!

    Trả lời cho chủ:

    Tìm hiểu về các hàm của lớp DateTime.
    Hàm DaysInMonth cho biết tháng ấy có bao nhiêu ngày
    Hàm DayOfWeek cho biết ngày 1 là thứ mấy, từ đó tính ra tháng có bao nhiêu T7 và CN.
    Hết

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn