2013-04-29 125 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 

- 注意:请标记为答案,如果这可以帮助您更好,然后再前一个。

相关问题