我已經使用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