sql >> Database >  >> RDS >> Sqlserver

Converteer een maandnummer naar de maandnaam in SQL Server (T-SQL)

U kunt de onderstaande T-SQL-code gebruiken om een ​​maandnummer om te zetten naar de bijbehorende naam in SQL Server.

Dit is voor momenten waarop u niet echt de volledige datum hebt - wanneer u alleen het maandnummer heeft. Als je doe de datum hebt, dan kunt u als volgt de naam van de maand van een datum halen.

Voorbeeld

U kunt de naam van de maand uit het bijbehorende nummer halen door de DATENAME() . te gebruiken functie in combinatie met DATEADD() .

Hier is een voorbeeld waarin maand 10 (oktober) wordt gebruikt:

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

Resultaat:

Oktober

Uitleg van de code

Als je je afvraagt ​​waarom er een -1 . is in de bovenstaande code is dat omdat de basisdatum 1900-01-01 is (nou ja, 1900-01-01 00:00:00.000 om precies te zijn).

Als we 10 bij 01 optellen, krijgen we 11, wat november is (de verkeerde maand). Daarom moeten we het met 1 aftrekken.

Het volgende voorbeeld zou dit beter moeten illustreren dan mijn woorden. Hier zijn verschillende DATEADD() waarden die worden geretourneerd, afhankelijk van wat ik als derde argument gebruik.

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

Resultaat:

+-------------------------+-------------------- -----+-------------------------+ | Basisdatum | Voeg 10 toe | 1 aftrekken | |-------------------------+----------------------- --+-------------------------| | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 | +-------------------------+----------------------- --+-------------------------+

Dus de derde optie geeft ons het juiste maandnummer, en het is dan een kwestie van DATENAME() om het om te zetten in de naam van de maand.

Een alternatief:FORMAT()

Als je de DATENAME() niet leuk vindt functie, kunt u deze omwisselen voor de FORMAT() in plaats daarvan functioneren. Hetzelfde concept is van toepassing.

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

Resultaat:

Oktober

  1. MariaDB SYSTEM_USER() uitgelegd

  2. Genereer willekeurige int-waarde van 3 tot 6

  3. Hoe SQLAlchemy-caching uit te schakelen?

  4. Tabel wordt twee keer gespecificeerd, zowel als doel voor 'UPDATE' en als aparte bron voor gegevens in mysql