Ik heb maanden opgeslagen in SQL Server als 1,2,3,4,…12. Ik zou ze willen weergeven als januari, februari enz. Is er een functie in SQL Server zoals MonthName(1) = January? Ik probeer, indien mogelijk, een CASE-statement te vermijden.
Antwoord 1, autoriteit 100%
Een beetje hacky maar zou moeten werken:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Antwoord 2, autoriteit 96%
Ik denk dat dit de beste manier is om de naam van de maand te krijgen als je het maandnummer
hebt
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Of
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
Antwoord 3, autoriteit 61%
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
Antwoord 4, autoriteit 46%
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
Antwoord 5, autoriteit 18%
Gebruik de beste manier
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
Antwoord 6, autoriteit 12%
Het is heel eenvoudig.
select DATENAME(month, getdate())
uitvoer: januari
Antwoord 7, autoriteit 5%
U kunt de ingebouwde functie CONVERT
. gebruiken
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
Hiermee worden de eerste 3 tekens van de maand weergegeven (JAN,FEB enz.)
Antwoord 8, autoriteit 4%
naast origineel
SELECT DATENAME(m, str(2) + '/1/2011')
u kunt dit doen
SELECT DATENAME(m, str([column_name]) + '/1/2011')
op deze manier krijg je namen voor alle rijen in een tabel. waarbij [column_name] staat voor een integer-kolom met de numerieke waarde 1 tot en met 12
2 staat voor een willekeurig geheel getal, door contactstring heb ik een datum gemaakt waar ik de maand kan extraheren. ‘/1/2011’ kan elke datum zijn
als je dit met variabele wilt doen
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Antwoord 9, autoriteit 4%
Het volgende werkt voor mij:
CAST(GETDATE() AS CHAR(3))
Antwoord 10, autoriteit 4%
In sommige landen, zoals Hebreeuws, zijn er schrikkelmaanden afhankelijk van het jaar vermijd fouten in dergelijke landinstellingen, u zou de volgende oplossing kunnen overwegen:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
Antwoord 11, autoriteit 4%
Gebruik deze instructie om de numerieke waarde van de maand om te zetten in de naam van de maand.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Antwoord 12, autoriteit 4%
Vanaf SQL Server 2012 kunt u FORMAAT en DATEFROMPARTS om dit probleem op te lossen. (Als je maandnamen uit andere culturen wilt, verander dan: en-US
)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Als u een maand van drie letters wilt:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Als je echt wilt, kun je hier een functie voor maken:
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
Antwoord 13, autoriteit 2%
U kunt de conversiefunctie gebruiken zoals hieronder
CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)
Antwoord 14, autoriteit 2%
Trek gewoon de huidige maand af van de datum van vandaag en voeg vervolgens uw maandnummer toe. Gebruik dan de datename-functie om de volledige naam in 1 regel te geven.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Antwoord 15, autoriteit 2%
Dit werkt zeker
select datename(M,GETDATE())
Antwoord 16, autoriteit 2%
ik denk dat dit voldoende is om de naam van de maand te krijgen als je een datum hebt.
SELECT DATENAME(month ,GETDATE())
Antwoord 17, autoriteit 2%
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
Antwoord 18, autoriteit 2%
Probeer het onderstaande om het maandnummer naar de naam van de maand te converteren
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
Antwoord 19, autoriteit 2%
SELECT DATENAME(MONTH,dateadd(month, -3,getdate()))
Antwoord 20
select monthname(curdate());
OF
select monthname('2013-12-12');
Antwoord 21
Voor mij werken
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
Antwoord 22
Deze werkte voor mij:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
Uit een bericht hierboven van @leoinfo en @Valentino Vranken. Even snel selecteren en het werkt.
Antwoord 23
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Uitleg:
- Eerste Decalre-variabele
MonthNumber
- Krijg de huidige maand voor
DatePart
die het maandnummer retourneert - Naam van de derde query-retourmaand
Antwoord 24
je kunt de datum zo krijgen.
bv:- Gebruikers tabel
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
je kunt de maandnaam zo krijgen
select year(created_at), monthname(created_at) from users;
uitvoer
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Antwoord 25
De gemakkelijkste manier is door de functie MONTHNAME(your_date)
aan te roepen. uw_datum kan een statische waarde zijn of de waarde uit een van uw tabelvelden.
Antwoord 26
Gebruik deze verklaring om de naam van de maand op te vragen:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
Hiermee krijgt u een korte maandnaam. Zoals dit: januari, februari, maart, enz.
Antwoord 27
Hier is mijn oplossing waarbij ik wat informatie van anderen gebruik om een probleem op te lossen.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
Antwoord 28
Er is geen door het systeem gedefinieerde functie in de SQL-server. Maar u kunt uw eigen door de gebruiker gedefinieerde functie maken, een scalaire functie. U vindt scalaire functies in de Object Explorer voor uw database: Programmability->Functions->Scalar-valued Functions. Hieronder gebruik ik een tabelvariabele om alles bij elkaar te brengen.
--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]
Antwoord 29
U kunt een functie als deze maken om de maand te genereren en te doen
SELECTEER dbo.fn_GetMonthFromDate(date_column) als 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
Antwoord 30
Probeer dit: SELECT MONTHNAME(concat('1970-',[Month int val],'-01'))
Bijvoorbeeld- SELECT MONTHNAME(concat('1970-',4,'-01'))
Het antwoord is – april