-1
我有一個數據庫列p_name
包含MMM-YY
(如'JAN-11')形式的月份數據。它是varchar
的類型。我怎樣才能找到這個數據的前一個月(在'Dec-10'的例子中)?如何查找數據庫字符串'JAN-11'的上個月?
我有一個數據庫列p_name
包含MMM-YY
(如'JAN-11')形式的月份數據。它是varchar
的類型。我怎樣才能找到這個數據的前一個月(在'Dec-10'的例子中)?如何查找數據庫字符串'JAN-11'的上個月?
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什麼
假設你使用SQL Server:
轉換JAN-11
爲datetime
對象,減去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")
說明你正在使用將是有益的,因爲可用的日期函數庫之間變化的數據庫。 – dan1111 2012-08-14 12:18:51