sql上个月获得

时间:2015-11-24 14:04:36

标签: sql

我需要输入上个月和年份。因此,如果用户键入201412,则应返回201411.如果他们输入201501,则应返回201401。

2 个答案:

答案 0 :(得分:0)

在SQL Server数据库上执行此操作的快速方法是从字符串中创建日期元素,将其转换为日期类型,然后使用函数dateadd并添加-1个月(如果您愿意,可减去一个月) )

像这样:

select DATEADD(MONTH,-1,CAST(LEFT(201401,4)+'-'+RIGHT(201401,2)+'-01' AS DATE))

分解的步骤:

  1. 选择最左边的4个字符
  2. 获取年份
  3. 选择最右边的两个字符
  4. 来获取月份
  5. 添加分隔符' - '和前面两个元素的01,以获得一个有待转换的有效格式的字符串
  6. 将字符串转换为日期类型以启用日期操作
  7. 使用dateadd函数将1个月添加到日期元素
  8. 手指越过可用输入而不会破坏您的代码

答案 1 :(得分:0)

在SQL Server中

 DECLARE @dateAsNumber VARCHAR(8);
SET @dateAsNumber = '198705';

DECLARE @DateConvertedFromNumber DATETIME; 
SELECT  @DateConvertedFromNumber = CONVERT (DATETIME, CONVERT(CHAR(8), @dateAsNumber
        + '01'))

SELECT  LEFT(CONVERT(VARCHAR,   DATEADD(YEAR, -1,
                                              @DateConvertedFromNumber), 112),
             6) AS 'Year Before'

SELECT  LEFT(CONVERT(VARCHAR,   DATEADD(MONTH, -1,
                                              @DateConvertedFromNumber), 112),
             6) AS 'Month Before'