我有一个p_name
包含月份数据的数据库列MMM-YY
(例如“JAN-11”)。它是类型varchar
。如何找到该数据的上个月(在示例“Dec-10”中)?
问问题
148 次
2 回答
3
假设您使用 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"
然后,您可以将此逻辑放入用户定义的函数中,并将其称为:
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 回答