PDA

View Full Version : Ham tinh ngay cuo^i' cu`ng cua thang bang SQL



tramdtt
09-02-2004, 09:50
Chao tat ca cac anh em xa gan!
Ai biet chi gium toi ha`m SQL tinh ngay cuo^i' cu`ng cua 1 thang bat ky voi?
Xin cam on

Python
13-02-2004, 10:23
Trong SQL Server thì không có sẵn hàm này, tuy nhiên - mình có thể tự viết, thuật toán thì cũng đơn giản thôi :

+ Bạn sẽ lấy ngày đầu tiên của tháng cần tính, cộng thêm vào 1 tháng, sau đó trừ đi 1 ngày thì sẽ được ngày cuối cùng.

Ví dụ :
DECLARE @Input DATETIME
DECLARE @Temp DATETIME
DECLARE @Result DATETIME

SET @Input = '2/1/2004'
SET @Temp = DATEADD(m,1,@Input)
SET @Result = DATEADD(d,-1,@Temp)

PRINT @Result

--------------------------
Trong đó @Input là dữ liệu của tháng cần tính.

Bạn có thể viết lại ví dụ này dưới dạng SP để tiện sử dụng về sau như sau :

CREATE PROCEDURE GetLastDay @Input DATETIME
AS

DECLARE @Temp DATETIME
DECLARE @Result DATETIME

SET @Temp = DATEADD(m,1,@Input)
SET @Result = DATEADD(d,-1,@Temp)

RETURN DATEPART(day,@Result)
GO

-----------------------

Enjoy it ! :)

phatnq2003
09-04-2004, 16:44
Chao tat ca cac anh em xa gan!
Ai biet chi gium toi ha`m SQL tinh ngay cuo^i' cu`ng cua 1 thang bat ky voi?
Xin cam on

Nếu bạn dùng SQL Server 2000 trở lên thì chế một function với nội dung tương tự như bạn Python đã vẽ. Tuy nhiên bạn nên cho nhập param là ngày tùy ý. Sau đó bạn declare một biến datetime để gán bằng ngày đầu tháng. Tiếp tục như Python. :)