Sql 如何获得Mon-yyyy格式的下个月?
我有一个表,它的日期格式如下Sql 如何获得Mon-yyyy格式的下个月?,sql,sql-server,sql-server-2008,datetime,Sql,Sql Server,Sql Server 2008,Datetime,我有一个表,它的日期格式如下 ##SaleDate## _________ Oct 13 -------- Nov 13 -------- Dec 13 -------- Jan 14 -------- 如何从以前的日期格式中获取下一个月的日期?通过设置“最小日期”和“最大日期”,可以获得如下所示的日期列表 DECLARE @OldestDate DATE DECLARE @maxDate DATE SET @OldestDate =
##SaleDate##
_________
Oct 13
--------
Nov 13
--------
Dec 13
--------
Jan 14
--------
如何从以前的日期格式中获取下一个月的日期?通过设置“最小日期”和“最大日期”,可以获得如下所示的日期列表
DECLARE @OldestDate DATE
DECLARE @maxDate DATE
SET @OldestDate = '09/29/2013' -- (SELECT MIN(SALEDATE) FROM YOURTABLE)
SET @maxDate = '12/19/2014' -- (SELECT MAX(SALEDATE) FROM YOURTABLE)
; WITH dates([DateCounter]) AS
(
SELECT @OldestDate AS [DateCounter]
UNION ALL
SELECT DATEADD(month,+1,[DateCounter])
FROM DATES
WHERE [DateCounter] < CAST(@maxDate AS DATE)
)
SELECT LEFT(DATENAME(MONTH,[DateCounter]),3) + ' ' + DATENAME(YEAR,[DateCounter])
FROM dates
OPTION (MAXRECURSION 0)
下面是一些长卷积内联函数的工作示例:
DECLARE @V VARCHAR(6)
SET @V = 'Jan 14'
SELECT RIGHT(CONVERT(VARCHAR(9),DATEADD(m,1,CONVERT(DATETIME,'01 ' + @V,106)),6),6)
SELECT RIGHT(
CONVERT(
VARCHAR(9),
DATEADD(m,1,CONVERT(DATETIME,'01 ' + SaleDate,106))
,6)
,6)
FROM YourTable
你试过DateAdd吗?你有没有想过重新设计这个表,让它包含一个日期而不是一个字符串?我怎么能只用DATEADD来实现呢