【问题标题】:How to get Next Month in Mon yyyy Format?如何以 Mon yyyy 格式获取下个月?
【发布时间】:2014-03-12 10:16:32
【问题描述】:

我有一张表格,其日期格式为SaleDate,格式如下

##SaleDate##
_________
Oct 13  
--------
Nov 13  
--------  
Dec 13  
-------- 
Jan 14  
--------  

如何从以前的日期格式中获取下个月?

【问题讨论】:

标签: sql sql-server sql-server-2008 datetime


【解决方案1】:

通过设置最小和最大日期,您可以获得如下日期列表

       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) 

这是SQLFiddler 上的工作示例

【讨论】:

    【解决方案2】:

    一些长而复杂的内联函数:

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-13
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 2021-09-13
      相关资源
      最近更新 更多