2013-04-29 121 views

回答

5

嘗試這一個 -

DECLARE @Date DATETIME 
SELECT @Date = GETDATE() 

SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date) + 1, 0) - 1 
0

能否請你試試這個,應該按預期工作:

SELECT DATEADD (DAY, -1, DATEADD (MONTH, DATEDIFF (MONTH, 0, '$pay_first_day') + 1, 0)) 

這將返回的最後一天相當於給定日期的格式爲:'2013-02-28 00:00:00.000'如果你$pay_first_day是在二月,它會返回'2013-04-30 00:00:00.000'如果您的$pay_first_day是在四月。

+0

對我很有幫助,謝謝你的努力 – 2013-04-30 06:13:10

+0

你是好的。 – 2013-04-30 07:44:25

-1

這裏是兩個UDF的開始和月底。

CREATE FUNCTION dbo.End_of_month (@Date datetime) 
RETURNS datetime AS 
BEGIN 
    DECLARE @ret datetime 
    SET @Ret=DATEADD(DAY,-DAY(@Date)+1,@Date); 
    SET @Ret=DATEADD(Month,1,@Ret); 
    SET @Ret=DATEADD(Day,-1,@Ret); 
    RETURN(@Ret) 
END 

CREATE FUNCTION dbo.Begin_of_month (@Date datetime) 
RETURNS datetime AS 
BEGIN 
    DECLARE @ret datetime 
    SET @Ret=DATEADD(DAY,-DAY(@Date)+1,@Date); 
    RETURN(@Ret) 
END 
1

- 包裝紙答案在無縫轉換的功能。

CREATE FUNCTION [dbo].[LAST_DAY] 
(
    @inDate DATETIME 
) 
RETURNS DATETIME 
AS 
BEGIN 
    RETURN DATEADD(MONTH, DATEDIFF(MONTH, 0, @inDate) + 1, 0) - 1 
END 
-- TO TEST: SELECT dbo.LAST_DAY(getDate()) as LastDayOfThisMonth 

- 注意:請標記爲答案,如果這可以幫助您更好,然後再前一個。

相關問題