我已经使用Oracle中的LAST_DAY() function这样的:什么是SQL Server 2008中Oracle的LAST_DAY()函数的等价物?
Last_Day(to_date('$pay_first_day' , 'YYYY-mm-dd'))
我有什么在SQL服务器做2008 R2数据库来实现同样的结果?
我已经使用Oracle中的LAST_DAY() function这样的:什么是SQL Server 2008中Oracle的LAST_DAY()函数的等价物?
Last_Day(to_date('$pay_first_day' , 'YYYY-mm-dd'))
我有什么在SQL服务器做2008 R2数据库来实现同样的结果?
尝试这一个 -
DECLARE @Date DATETIME
SELECT @Date = GETDATE()
SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, @Date) + 1, 0) - 1
能否请你试试这个,应该按预期工作:
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
是在四月。
这里是两个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
- 包装纸答案在无缝转换的功能。
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
- 注意:请标记为答案,如果这可以帮助您更好,然后再前一个。
对我很有帮助,谢谢你的努力 – 2013-04-30 06:13:10
你是好的。 – 2013-04-30 07:44:25