/ / sql erhalten vorherigen Monat - sql

sql erhalten vorherigen Monat - sql

Ich muss den vorherigen Monat und das Jahr erhalten, wenn ich eingetippt habe. Wenn also ein Benutzer 201412 eingibt, sollte er 201411 zurückgeben. Wenn er 201501 eingibt, sollte er 201401 zurückgeben.

Antworten:

0 für die Antwort № 1

In 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 für die Antwort № 2

Eine schnelle Möglichkeit, dies in einer SQL Server-Datenbank zu tunwäre, ein Datumselement aus der Zeichenkette zu erstellen, es in einen Datumstyp zu konvertieren, dann die Funktion dateadd zu verwenden und -1 Monat hinzuzufügen (wenn gewünscht, einen Monat subtrahieren)

So was:

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

Die aufgegliederten Schritte:

  1. Erhalten Sie das Jahr, indem Sie die 4 am weitesten links stehenden Zeichen auswählen
  2. Erhalten Sie den Monat, indem Sie die 2 am weitesten rechts stehenden Zeichen auswählen
  3. Fügen Sie die Trennzeichen "-" und 01 mit den beiden vorherigen Elementen hinzu, um eine Zeichenfolge mit einem gültigen Format zu erhalten, das konvertiert werden soll
  4. Konvertieren Sie die Zeichenfolge in einen Datumstyp, um Datumsoperationen zu aktivieren
  5. Verwenden Sie die Funktion dateadd, um dem Element date -1 Monat hinzuzufügen
  6. Daumen drücken für brauchbare Eingaben, die den Code nicht beschädigen