Converti numero mese in mese Nome funzione in SQL

Ho mesi archiviati in SQL Server come 1,2,3,4, … 12. Vorrei visualizzarli come gennaio, febbraio, ecc. Esiste una funzione in SQL Server come MonthName (1) = January? Sto cercando di evitare un’istruzione CASE, se ansible.

Un po ‘hacky ma dovrebbe funzionare:

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime))) 

Penso che questo sia il modo migliore per ottenere il nome del mese quando hai il numero del mese

 Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 ) 

O

 Select DateName( month , DateAdd( month , @MonthNumber , -1 ) ) 
 SELECT DATENAME(month, GETDATE()) AS 'Month Name' 
 SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3) 

Usa il modo migliore

 Select DateName( month , DateAdd( month , @MonthNumber , -1 )) 

È molto semplice

 select DATENAME(month, getdate()) 

uscita: gennaio

Il seguente funziona per me:

CAST (GETDATE () COME CHAR (3))

oltre all’originale

SELECT DATENAME(m, str(2) + '/1/2011')

Puoi farlo

SELECT DATENAME(m, str([column_name]) + '/1/2011')

in questo modo ottieni i nomi per tutte le righe in una tabella. dove [nome_colonna] rappresenta una colonna intera contenente valori numerici da 1 a 12

2 rappresenta qualsiasi numero intero, per contatto stringa ho creato una data in cui posso estrarre il mese. ‘/ 1/2011’ può essere qualsiasi data

se vuoi farlo con variabile

 DECLARE @integer int; SET @integer = 6; SELECT DATENAME(m, str(@integer) + '/1/2011') 

In alcuni locali come l’ebraico, i mesi bisestili dipendono dall’anno, quindi per evitare errori in tali locali potresti prendere in considerazione la seguente soluzione:

 SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01') 

Utilizzare questa istruzione per convertire il valore numerico del mese in Nome mese.

 SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE())) 

È ansible utilizzare la funzione CONVERT integrata

 select CONVERT(varchar(3), Date, 100) as Month from MyTable. 

Questo mostrerà i primi 3 caratteri del mese (JAN, FEB ecc.)

È ansible utilizzare il functin di conversione come di seguito

 CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100) 

Questo funzionerà correttamente – seleziona il nome del dato (M, GETDATE ())

Basta sottrarre il mese corrente dalla data di oggi, quindi aggiungere di nuovo il numero del mese. Quindi utilizzare la funzione datename per assegnare il nome completo all in 1 riga.

 print datename(month,dateadd(month,-month(getdate()) + 9,getdate())) 

Penso che questo sia sufficiente per ottenere il nome del mese quando hai una data.

 SELECT DATENAME(month ,GETDATE()) 

Per convertire il numero del mese nel nome del mese, prova il seguente

 declare @month smallint = 1 select DateName(mm,DATEADD(mm,@month - 1,0)) 

Questo ha funzionato per me:

 @MetricMonthNumber (some number) SELECT (DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName FROM TableName 

Da un post sopra di @leoinfo e @Valentino Vranken. Ho appena fatto una scelta rapida e funziona.

 Declare @MonthNumber int SET @MonthNumber=DatePart(Month,GETDATE()) Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 ) 

spiegazione:

  1. Primo numero variabile MonthNumber
  2. Ottieni il mese corrente per DatePart che restituisce il numero del mese
  3. Nome del mese di restituzione della terza query

SELEZIONA DATENAME (MESE, dateadd (mese, -3, getdate ()))

 select monthname(curdate()); 

O

 select monthname('2013-12-12'); 

Lavorando per me

 SELECT MONTHNAME() AS "Month Name" FROM  WHERE  
 SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1)) 

Usa questa dichiarazione per ottenere il nome del mese:

 DECLARE @date datetime SET @date='2015/1/4 00:00:00' SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name' 

Questo ti darà il nome del breve mese. Così: gennaio, febbraio, marzo, ecc.

Ecco la mia soluzione utilizzando alcune informazioni di altri per risolvere un problema.

 datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname 

Non esiste una funzione definita dal sistema nel server SQL. Ma puoi creare la tua funzione definita dall’utente, una funzione scalare. Troverai le funzioni scalari nell’Explorer oggetti per il tuo database: Programmabilità-> Funzioni-> Funzioni con valori scalari. Sotto, utilizzo una variabile di tabella per riunire tutto.

 --Create the user-defined function CREATE FUNCTION getmonth (@num int) RETURNS varchar(9) --since 'September' is the longest string, length 9 AS BEGIN DECLARE @intMonth Table (num int PRIMARY KEY IDENTITY(1,1), month varchar(9)) INSERT INTO @intMonth VALUES ('January'), ('February'), ('March'), ('April'), ('May') , ('June'), ('July'), ('August') ,('September'), ('October') , ('November'), ('December') RETURN (SELECT I.month FROM @intMonth I WHERE I.num = @num) END GO --Use the function for various months SELECT dbo.getmonth(4) AS [Month] SELECT dbo.getmonth(5) AS [Month] SELECT dbo.getmonth(6) AS [Month] 

puoi avere la data come questa ad esempio: – Tabella utenti

 id name created_at 1 abc 2017-09-16 2 xyz 2017-06-10 

puoi ottenere il monthname come questo

 select year(created_at), monthname(created_at) from users; 

produzione

 +-----------+-------------------------------+ | year(created_at) | monthname(created_at) | +-----------+-------------------------------+ | 2017 | september | | 2017 | june | 

A partire da SQL Server 2012, è ansible utilizzare FORMAT e DATEFROMPARTS per risolvere questo problema.

 select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US') 

Se vuoi un mese di tre lettere:

 select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US') 

Se lo desideri, puoi creare una funzione per questo:

 CREATE FUNCTION fn_month_num_to_name ( @month_num tinyint ) RETURNS varchar(20) AS BEGIN RETURN FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US') END 
 to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') 

dove V_MONTH_NUM è il numero del mese

 SELECT to_char(to_date(V_MONTH_NUM,'MM'),'MONTH') from dual; 

Usa questa affermazione

 SELECT TO_CHAR(current_date,'dd MONTH yyyy') FROM dual 

questo convertirà il numero del mese in una stringa completa del mese