Converteer maandnummer naar maandnaamfunctie in SQL

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:

  1. Eerste Decalre-variabele MonthNumber
  2. Krijg de huidige maand voor DatePart die het maandnummer retourneert
  3. 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

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Other episodes