-1

我有一个p_name包含月份数据的数据库列MMM-YY(例如“JAN-11”)。它是类型varchar。如何找到该数据的上个月(在示例“Dec-10”中)?

4

2 回答 2

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"

然后,您可以将此逻辑放入用户定义的函数中,并将其称为:

SELECT dbo.PreviousMonth("JAN-11")
于 2012-08-14T12:16:48.570 回答
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)

只需参考这个例子,你就会得到你正在寻找的东西

于 2012-08-14T12:16:33.780 回答