2012-08-14 48 views
-1

我有一個數據庫列p_name包含MMM-YY(如'JAN-11')形式的月份數據。它是varchar的類型。我怎樣才能找到這個數據的前一個月(在'Dec-10'的例子中)?如何查找數據庫字符串'JAN-11'的上個月?

+5

說明你正在使用將是有益的,因爲可用的日期函數庫之間變化的數據庫。 – dan1111 2012-08-14 12:18:51

回答

1
Declare @pramDate varchar(10) 
set @pramDate = '01/05/2012' 

SELECT UPPER(LEFT(DateName(month,DATEADD(mm, DATEDIFF(mm, 0, CONVERT(datetime,@pramDate)) - 1, 0)),3)) + 
    '-' + substring(DateName(Year, CONVERT(datetime,@pramDate)) ,3,4) 

只是參考的例子,你會得到你所lookiing什麼

3

假設你使用SQL Server:

轉換JAN-11datetime對象,減去1個月,然後轉換回你的字符串格式。

declare @date nvarchar(10) = 'JAN-11' 

declare @dt datetime = '1-' + @date --Converts to datetime 
SET @dt = DATEADD(m, -1, @dt) --Subtracts 1 month 

RETURN UPPER(REPLACE(RIGHT(CONVERT(nvarchar(9), @dt, 6), 6), ' ', '-')) 
--Returns "DEC-10" 

然後,您可以把這個邏輯到User defined function,並調用它像:

SELECT dbo.PreviousMonth("JAN-11") 
相關問題