sql >> Databasteknik >  >> RDS >> Sqlserver

Konvertera ett månadsnummer till månadsnamnet i SQL Server (T-SQL)

Du kan använda T-SQL-koden nedan för att konvertera ett månadsnummer till dess motsvarande namn i SQL Server.

Det här är för tillfällen då du faktiskt inte har det fullständiga datumet – när allt du har är månadsnumret. Om du gör har datumet, så här får du månadsnamnet från ett datum.

Exempel

Du kan få månadsnamnet från dess motsvarande nummer genom att använda DATENAME() funktion i kombination med DATEADD() .

Här är ett exempel som använder månad 10 (oktober):

SELECT DATENAME( 
    month, 
    DATEADD( month , 10, -1 )
    );

Resultat:

October

Förklaring av koden

Om du undrar varför det finns en -1 i ovanstående kod beror det på att basdatumet är 1900-01-01 (nåja, 1900-01-01 00:00:00.000 för att vara exakt).

Lägger vi till 10 till 01 får vi 11, vilket är november (fel månad). Därför måste vi subtrahera det med 1.

Följande exempel bör illustrera detta bättre än mina ord. Här är olika DATEADD() värden som returneras, beroende på vad jag använder som det tredje argumentet.

SELECT 
  DATEADD( month, 0, 0 ) AS [Base Date],
  DATEADD( month, 10, 0 ) AS [Add 10],
  DATEADD( month, 10, -1 ) AS [Subtract 1];

Resultat:

 +-------------------------+-------------------------+-------------------------+
 | Base Date               | Add 10                  | Subtract 1              |
 |-------------------------+-------------------------+-------------------------|
 | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
 +-------------------------+-------------------------+-------------------------+ 

Så det tredje alternativet ger oss rätt månadsnummer, och det är då en enkel fråga att använda DATENAME() för att konvertera det till månadens namn.

Ett alternativ:FORMAT()

Om du inte gillar DATENAME() funktionen kan du byta ut den mot FORMAT() funktion istället. Samma koncept gäller.

SELECT FORMAT( 
    DATEADD( month , 10, -1 ),
    'MMMM'
    );

Resultat:

October

  1. Hur man lägger till ett sidhuvud och en sidfot i en rapport i Microsoft Access

  2. Hur söker jag efter en sträng i en SQL Server-databas?

  3. Enkel PHP SQL-inloggningsfelsökning

  4. Exportera en MySQL-databas till SQLite-databas