Respuestas:
Un poco hacky pero debería funcionar:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Creo que esta es la mejor manera de obtener el nombre del mes cuando tienes el número de mes
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
O
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
además del original
SELECT DATENAME(m, str(2) + '/1/2011')
Puedes hacerlo
SELECT DATENAME(m, str([column_name]) + '/1/2011')
de esta manera obtienes nombres para todas las filas de una tabla. donde [nombre_columna] representa una columna entera que contiene el valor numérico del 1 al 12
2 representa cualquier número entero, por cadena de contacto creé una fecha donde puedo extraer el mes. '/ 1/2011' puede ser cualquier fecha
si quieres hacer esto con variable
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Use esta declaración para convertir el valor numérico del mes al nombre del mes.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
En algunos entornos locales como el hebreo, hay meses bisiestos que dependen del año, por lo que para evitar errores en dichos entornos locales, puede considerar la siguiente solución:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
A partir de SQL Server 2012, puede usar FORMAT y DATEFROMPARTS para resolver este problema. (Si desea nombres de los meses de otras culturas, cambie: en-US
)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Si quieres un mes de tres letras:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Si realmente quieres, puedes crear una función para esto:
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
Simplemente reste el mes actual de la fecha de hoy, luego vuelva a agregar su número de mes. Luego use la función datename para dar el nombre completo en 1 línea.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Este me funcionó:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
De una publicación anterior de @leoinfo y @Valentino Vranken. Acabo de hacer una selección rápida y funciona.
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Explicacion:
MonthNumber
DatePart
que se devuelve el número de mesTrabajando para mi
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
puedes obtener la fecha como esta. por ejemplo: - Tabla de usuarios
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
puedes obtener el nombre del mes como este
select year(created_at), monthname(created_at) from users;
salida
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Use esta declaración para obtener el nombre del mes:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
Esto te dará un nombre de mes corto. Así: enero, febrero, marzo, etc.
Aquí está mi solución usando información de otros para resolver un problema.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
No hay una función definida por el sistema en el servidor SQL. Pero puede crear su propia función definida por el usuario, una función escalar. Encontrará funciones escalares en el Explorador de objetos para su base de datos: Programabilidad-> Funciones-> Funciones con valores escalares. A continuación, uso una variable de tabla para unir todo.
--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]
Puede crear una función como esta para generar el Mes y hacer SELECT dbo.fn_GetMonthFromDate (date_column) como Month FROM table_name
/****** Object: UserDefinedFunction [dbo].[fn_GetMonthFromDate] Script Date: 11/16/2018 10:26:33 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[fn_GetMonthFromDate]
(@date datetime)
RETURNS varchar(50)
AS
BEGIN
DECLARE @monthPart int
SET @monthPart = MONTH(@date)
IF @monthPart = 1
BEGIN
RETURN 'January'
END
ELSE IF @monthPart = 2
BEGIN
RETURN 'February'
END
ELSE IF @monthPart = 3
BEGIN
RETURN 'March'
END
ELSE IF @monthPart = 4
BEGIN
RETURN 'April'
END
ELSE IF @monthPart = 5
BEGIN
RETURN 'May'
END
ELSE IF @monthPart = 6
BEGIN
RETURN 'June'
END
ELSE IF @monthPart = 7
BEGIN
RETURN 'July'
END
ELSE IF @monthPart = 8
BEGIN
RETURN 'August'
END
ELSE IF @monthPart = 9
BEGIN
RETURN 'September'
END
ELSE IF @monthPart = 10
BEGIN
RETURN 'October'
END
ELSE IF @monthPart = 11
BEGIN
RETURN 'November'
END
ELSE IF @monthPart = 12
BEGIN
RETURN 'December'
END
RETURN NULL END
La forma más fácil es llamando a la función MONTHNAME(your_date)
. your_date puede ser un valor estático o el valor de uno de los campos de su tabla.
SELECCIONE NOMBRE DEL MES (concat ('1970 -', [Mes int val], '- 01'))
ejemplo- SELECCIONE NOMBRE DEL MES (concat ('1970 -', 4, '- 01'))
respuesta- abril