Ich habe Monate in SQL Server als 1,2,3,4, ... 12 gespeichert. Ich möchte sie als Januar, Februar usw. anzeigen. Gibt es in SQL Server eine Funktion wie MonthName (1) = Januar? Ich versuche, eine CASE-Anweisung möglichst zu vermeiden.
Ein bisschen hackig aber sollte funktionieren:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
Ich denke, das ist der beste Weg, um den Monatsnamen zu erhalten wenn Sie die Monatsnummer haben
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Oder
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SELECT DATENAME(month, GETDATE()) AS 'Month Name'
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
Verwenden Sie den besten Weg
Select DateName( month , DateAdd( month , @MonthNumber , -1 ))
Es ist sehr einfach.
select DATENAME(month, getdate())
ausgabe: Januar
Folgendes funktioniert für mich:
CAST(GETDATE() AS CHAR(3))
zusätzlich zum Original
SELECT DATENAME(m, str(2) + '/1/2011')
du kannst das
SELECT DATENAME(m, str([column_name]) + '/1/2011')
auf diese Weise erhalten Sie Namen für alle Zeilen in einer Tabelle. Dabei steht [Spaltenname] für eine Ganzzahlspalte mit den numerischen Werten 1 bis 12
2 stellt eine beliebige Ganzzahl dar. Durch Kontaktzeichenfolge habe ich ein Datum erstellt, an dem ich den Monat extrahieren kann. '/ 1/2011' kann ein beliebiges Datum sein
wenn du das mit variable machen willst
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
Verwenden Sie diese Anweisung, um den numerischen Monatswert in den Monatsnamen umzuwandeln.
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
Sie können die eingebaute CONVERT
-Funktion verwenden
select CONVERT(varchar(3), Date, 100) as Month from MyTable.
Dies zeigt die ersten 3 Zeichen des Monats (JAN, FEB usw.) an.
In einigen Gebieten wie Hebräisch gibt es Schaltmonate abhängig vom Jahr. Um Fehler in solchen Gebieten zu vermeiden, sollten Sie die folgende Lösung in Betracht ziehen:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
Sie können die Konvertierungsfunktion wie folgt verwenden
CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)
Sicher, das wird funktionieren
select datename(M,GETDATE())
Subtrahieren Sie einfach den aktuellen Monat vom heutigen Datum und fügen Sie dann Ihre Monatsnummer zurück. Verwenden Sie dann die Funktion datename, um den vollständigen Namen in einer Zeile anzugeben.
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
Um die Monatszahl in einen Monatsnamen umzuwandeln, versuchen Sie es mit dem folgenden
declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))
ich denke, das ist genug, um einen Monatsnamen zu erhalten, wenn Sie ein Datum haben.
SELECT DATENAME(month ,GETDATE())
Arbeit für mich
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
select monthname(curdate());
OR
select monthname('2013-12-12');
sie können das Datum so erhalten. zB: - Benutzer Tabelle
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
sie können den Monthnamen so bekommen
select year(created_at), monthname(created_at) from users;
ausgabe
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
Ab SQL Server 2012 können Sie das -FORMAT und DATEFROMPARTS verwenden, um dieses Problem zu lösen. (Wenn Sie Monatsnamen aus anderen Kulturen wünschen, ändern Sie: en-US
)
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
Wenn Sie einen Monat mit drei Buchstaben wünschen:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
Wenn Sie wirklich wollen, können Sie dazu eine Funktion erstellen:
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
SELECT DATENAME(MONTH,dateadd(month, -3,getdate()))
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
Erklärung:
MonthNumber
DatePart
abrufen, der die Monatsnummer zurückgibtDieser hat für mich gearbeitet:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
Aus einem Beitrag von @leoinfo und @Valentino Vranken. Ich habe nur eine schnelle Auswahl getroffen und es funktioniert.
SELECT DateName(M, DateAdd(M, @MONTHNUMBER, -1))
Der einfachste Weg ist der Aufruf der Funktion MONTHNAME(your_date)
. your_date kann ein statischer Wert oder der Wert aus einem Ihrer Tabellenfelder sein.
Es gibt keine systemdefinierte Funktion im SQL Server. Sie können jedoch Ihre eigene benutzerdefinierte Funktion erstellen - eine Skalarfunktion. Skalarfunktionen finden Sie im Objekt-Explorer für Ihre Datenbank: Programmierbarkeit-> Funktionen-> Skalarwertfunktionen. Im Folgenden verwende ich eine Tabellenvariable, um alles zusammenzuführen.
--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]
Hier ist meine Lösung mit einigen Informationen anderer, um ein Problem zu lösen.
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
Sie können eine Funktion wie diese erstellen, um den Monat und den do zu generieren.
/****** 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
Verwenden Sie diese Anweisung, um den Monatsnamen abzurufen:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
Dies gibt Ihnen einen kurzen Monatsnamen. So: Jan, Feb, Mar usw.