Potrebujem získať predchádzajúci mesiac a rok, kedy bol zadaný. Takže ak používateľ zadá 201412, potom by mal vrátiť 201411. Ak píšu 201501, potom by mal vrátiť 201401.
odpovede:
0 pre odpoveď č. 1V 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 pre odpoveď č. 2
Rýchly spôsob, ako to urobiť v databáze SQL Serverby bolo vytvoriť prvok dátumu z vášho reťazca, previesť ho na typ dátumu, potom použiť funkciu dateadd a pridať -1 mesiac (odčítať jeden mesiac, ak sa vám páči)
Ako toto:
select DATEADD(MONTH,-1,CAST(LEFT(201401,4)+"-"+RIGHT(201401,2)+"-01" AS DATE))
Kroky rozdelené:
- Získajte rok výberom 4 znakov vľavo
- Získajte mesiac výberom dvoch pravých znakov
- Pridajte oddeľovače "-" a 01 s predchádzajúcimi dvoma prvkami, aby ste získali reťazec s platným formátom, ktorý sa má konvertovať
- Konvertujte reťazec na typ dátumu, aby ste povolili operácie dátumu
- Použite funkciu dateadd na pridanie -1 mesiaca do elementu dátumu
- Prsty prekročili použiteľný vstup, ktorý nezabije váš kód