-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