PDA

View Full Version : Cách tính số ngày làm việc trong tháng



pro_9900
01-11-2011, 12:02 AM
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 0:)

cuongdoannhat
01-11-2011, 02:01 AM
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ứ

leminh_005
01-11-2011, 12:50 PM
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

VoTichSu
01-11-2011, 02:18 PM
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