/ / sql get previous month - sql

sql dostać poprzedni miesiąc - sql

Muszę uzyskać poprzedni miesiąc i rok po wpisaniu. Tak więc jeśli użytkownik wpisze 201412, powinien powrócić do 2014 roku. Jeśli wpisz 201501, powinien powrócić 201401.

Odpowiedzi:

0 dla odpowiedzi № 1

W 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"

0 dla odpowiedzi nr 2

Szybki sposób na to w bazie danych SQL Serverbyłoby utworzyć element daty z łańcucha, przekonwertować go na typ daty, a następnie użyć funkcji dateadd i dodać -1 miesiąc (odejmij jeden miesiąc, jeśli chcesz)

Lubię to:

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

Kroki w podziale:

  1. Zdobądź rok, wybierając 4 lewe znaki
  2. Zdobądź miesiąc, wybierając 2 najbardziej prawe znaki
  3. Dodaj separatory "-" i 01 z poprzednimi dwoma elementami, aby uzyskać ciąg znaków z poprawnym formatem do przekonwertowania
  4. Konwertuj ciąg znaków na typ danych, aby umożliwić operacje na datach
  5. Użyj funkcji dateadd, aby dodać -1 miesiąc do elementu daty
  6. Fingers skrzyżowane dla użytecznych danych wejściowych, które nie złamią kodu