簡體   English   中英

sql獲取上個月

[英]sql get previous month

我需要在輸入時獲取前一個月和一年。所以如果用戶輸入 201412 那么它應該返回 201411。如果他們輸入 201501 那么它應該返回 201401。

在 SQL Server 數據庫上執行此操作的一種快速方法是從字符串中創建一個日期元素,將其轉換為日期類型,然后使用函數 dateadd 並添加 -1 個月(如果您願意,可以減去一個月)

像這樣:

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

步驟分解:

  1. 通過選擇最左邊的 4 個字符來獲取年份
  2. 通過選擇最右邊的 2 個字符來獲取月份
  3. 將分隔符'-'和01與前兩個元素相加,得到一個有效格式的字符串進行轉換
  4. 將字符串轉換為日期類型以啟用日期操作
  5. 使用 dateadd 函數將 -1 個月添加到日期元素
  6. 手指交叉以獲取不會破壞代碼的可用輸入

在 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'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM