tipo - operaciones con fechas sql
Convertir el número de mes a mes Función de nombre en SQL (29)
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
Tengo meses almacenados en SQL Server como 1,2,3,4, ... 12. Me gustaría mostrarlos como enero, febrero, etc. ¿Hay alguna función en SQL Server como MonthName (1) = enero? Estoy tratando de evitar una declaración CASE, si es posible.
Comenzando con SQL Server 2012, puede usar FORMAT y DATEFROMPARTS para resolver este problema.
select FORMAT(DATEFROMPARTS(1900, @mydate, 1), ''MMMM'', ''en-US'')
Si quieres un mes de tres letras:
select FORMAT(DATEFROMPARTS(1900, @mydate, 1), ''MMM'', ''en-US'')
Creo que esta es la mejor manera de obtener el nombre del mes cuando tienes el número del mes
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
[EDITAR]
Como Asif dijo a continuación, otra forma de hacerlo sería
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
Creo que esto es suficiente para obtener el nombre del mes cuando tienes una cita.
SELECT DATENAME(month ,GETDATE())
En algunos lugares como el hebreo, hay meses bisiestos dependiendo del año, por lo que para evitar errores en dichos entornos, puede considerar la siguiente solución:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), '' '', ''0'') + ''01'')
Es muy simple.
select DATENAME(month, getdate())
salida: enero
Este trabajó para mí:
@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.
Esto funcionará bien --seleccione el nombre de la fecha (M, GETDATE ())
Lo siguiente funciona para mí:
CAST (GETDATE () COMO CHAR (3))
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]
Para convertir el número de mes en el nombre de mes, intente el siguiente
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
Puede usar la función CONVERT
incorporada
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
Esto mostrará los primeros 3 caracteres del mes (ENE, FEB, etc.)
Puede usar la functina convertir como se muestra a continuación
CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)
SELECCIONAR DATENAME (MES, dateadd (mes, -3, getdate ()))
Simplemente reste el mes actual de la fecha de hoy, luego agregue nuevamente su número de mes. Luego use la función de nombre de fecha para dar el nombre completo todo en 1 línea.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Trabajando para mi
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
Un poco hacky pero debería funcionar:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST(''2008-01-01'' AS datetime)))
Usa esta declaración
SELECT TO_CHAR(current_date,''dd MONTH yyyy'') FROM dual
esto convertirá el número de mes en cadena completa de mes
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 le dará un nombre corto para el mes. De esta manera: enero, febrero, marzo, etc.
además del original
SELECT DATENAME(m, str(2) + ''/1/2011'')
Puedes hacerlo
SELECT DATENAME(m, str([column_name]) + ''/1/2011'')
de esta forma, obtienes nombres para todas las filas en una tabla. donde [column_name] representa una columna entera que contiene valores numéricos del 1 al 12
2 representa cualquier número entero, por cadena de contacto creé una fecha en la que 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'')
puedes obtener la fecha así. 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 |
Usa la mejor manera
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
Use esta declaración para convertir el valor numérico del mes al nombre del mes.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Explicación
- First Decalre Variable
MonthNumber
- Obtenga el mes actual para
DatePart
que devuelve el número de mes - Tercer nombre de mes de devolución de consulta
SELECT DATENAME(month, GETDATE()) AS ''Month Name''
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
SUBSTRING(''JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC '', (@intMonth * 4) - 3, 3)
select monthname(curdate());
O
select monthname(''2013-12-12'');
to_char(to_date(V_MONTH_NUM,''MM''),''MONTH'')
donde V_MONTH_NUM
es el número de mes
SELECT to_char(to_date(V_MONTH_NUM,''MM''),''MONTH'') from dual;