Réponses:
Un peu hacky mais ça devrait marcher:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Je pense que c'est la meilleure façon d'obtenir le nom du mois lorsque vous avez le numéro du mois
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Ou
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
C'est très simple.
select DATENAME(month, getdate())
sortie: janvier
en plus de l'original
SELECT DATENAME(m, str(2) + '/1/2011')
tu peux le faire
SELECT DATENAME(m, str([column_name]) + '/1/2011')
de cette façon, vous obtenez des noms pour toutes les lignes d'une table. où [nom_colonne] représente une colonne entière contenant la valeur numérique 1 à 12
2 représente n'importe quel entier, par la chaîne de contact j'ai créé une date où je peux extraire le mois. '/ 1/2011' peut être n'importe quelle date
si vous voulez le faire avec une variable
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Utilisez cette instruction pour convertir la valeur numérique du mois en nom du mois.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Dans certains pays comme l'hébreu, certains mois bissextiles dépendent de l'année. Pour éviter les erreurs dans ces pays, vous pouvez envisager la solution suivante:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
À partir de SQL Server 2012, vous pouvez utiliser FORMAT et DATEFROMPARTS pour résoudre ce problème. (Si vous voulez que les noms de mois d'autres cultures, changement: en-US
)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Si vous voulez un mois de trois lettres:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Si vous le voulez vraiment, vous pouvez créer une fonction pour cela:
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
Il suffit de soustraire le mois en cours de la date du jour, puis de rajouter votre numéro de mois. Utilisez ensuite la fonction datename pour donner le nom complet en une seule ligne.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Celui-ci a fonctionné pour moi:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
Extrait d'un post ci-dessus de @leoinfo et @Valentino Vranken. Je viens de faire une sélection rapide et cela fonctionne.
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Explication:
MonthNumber
DatePart
quel numéro de mois de retourTravailler pour moi
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
vous pouvez obtenir la date comme ça. par exemple: - Tableau des utilisateurs
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
vous pouvez obtenir le nom de montagne comme celui-ci
select year(created_at), monthname(created_at) from users;
production
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Utilisez cette déclaration pour obtenir le nom du mois:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
Cela vous donnera un nom de mois court. Comme ceci: Jan, Feb, Mar, etc.
Voici ma solution en utilisant des informations provenant d'autres personnes pour résoudre un problème.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
Il n'y a pas de fonction définie par le système dans SQL Server. Mais vous pouvez créer votre propre fonction définie par l'utilisateur - une fonction scalaire. Vous trouverez des fonctions scalaires dans l'Explorateur d'objets pour votre base de données: Programmabilité-> Fonctions-> Fonctions à valeur scalaire. Ci-dessous, j'utilise une variable de table pour rassembler le tout.
--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]
Vous pouvez créer une fonction comme celle-ci pour générer le mois et faire SELECT dbo.fn_GetMonthFromDate (date_column) en tant que Month FROM nom_table
/****** 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 façon la plus simple consiste à appeler la fonction MONTHNAME(your_date)
. votre_date peut être une valeur statique ou la valeur d'un de vos champs de table.
SELECT MONTHNAME (concat ('1970 -', [Month int val], '- 01'))
exemple - SELECT MONTHNAME (concat ('1970 -', 4, '- 01'))
réponse - avril