जवाबों:
थोड़ा हैसी लेकिन काम करना चाहिए:
SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))
मुझे लगता है कि महीने का नाम पाने के लिए यह सबसे अच्छा तरीका है जब आपके पास महीने की संख्या हो
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
या
Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)
मूल के अलावा
SELECT DATENAME(m, str(2) + '/1/2011')
तुम यह केर सकते हो
SELECT DATENAME(m, str([column_name]) + '/1/2011')
इस तरह से आपको एक तालिका में सभी पंक्तियों के नाम मिलते हैं। जहां [column_name] एक पूर्णांक स्तंभ का प्रतिनिधित्व करता है जिसमें 12 के माध्यम से संख्यात्मक मान 1 होता है
2 किसी भी पूर्णांक का प्रतिनिधित्व करता है, संपर्क स्ट्रिंग द्वारा मैंने एक तारीख बनाई जहां मैं महीने निकाल सकता हूं। '/ 1/2011' कोई भी तारीख हो सकती है
यदि आप चर के साथ ऐसा करना चाहते हैं
DECLARE @integer int;
SET @integer = 6;
SELECT DATENAME(m, str(@integer) + '/1/2011')
इस कथन का उपयोग महीना संख्यात्मक मान को महीना नाम में परिवर्तित करने के लिए करें।
SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))
हिब्रू जैसे कुछ स्थानों में, इस तरह के स्थानों में त्रुटियों से बचने के लिए वर्ष पर निर्भर रहने वाले लीप महीने हैं, आप निम्नलिखित समाधान पर विचार कर सकते हैं:
SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')
SQL सर्वर 2012 से प्रारंभ करके, आप इस समस्या को हल करने के लिए FORMAT और DATEFROMPARTS का उपयोग कर सकते हैं । (यदि आप अन्य संस्कृतियों से महीने के नाम चाहते हैं, तो परिवर्तन करें en-US) :
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMMM', 'en-US')
यदि आप तीन महीने का महीना चाहते हैं:
select FORMAT(DATEFROMPARTS(1900, @month_num, 1), 'MMM', 'en-US')
यदि आप वास्तव में चाहते हैं, तो आप इसके लिए एक फ़ंक्शन बना सकते हैं:
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
आज की तारीख से बस वर्तमान महीने घटाएं, फिर अपना महीना नंबर वापस जोड़ें। फिर सभी लाइन में पूरा नाम देने के लिए डिटेंमे फंक्शन का उपयोग करें।
print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))
यह एक मेरे लिए काम किया:
@MetricMonthNumber (some number)
SELECT
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName
@Leoinfo और @Valentino Vranken से ऊपर की पोस्ट से। बस एक त्वरित चयन किया और यह काम करता है।
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )
explaination:
MonthNumberDatePartजिसके लिए माहवार संख्या लौटाएंमेरे लिए काम कर रहा है
SELECT MONTHNAME(<fieldname>) AS "Month Name" FROM <tablename> WHERE <condition>
आप इस तरह की तारीख प्राप्त कर सकते हैं। जैसे: - उपयोगकर्ता तालिका
id name created_at
1 abc 2017-09-16
2 xyz 2017-06-10
आप इस तरह से माहनाम प्राप्त कर सकते हैं
select year(created_at), monthname(created_at) from users;
उत्पादन
+-----------+-------------------------------+
| year(created_at) | monthname(created_at) |
+-----------+-------------------------------+
| 2017 | september |
| 2017 | june |
महीने के नाम पाने के लिए इस कथन का उपयोग करें:
DECLARE @date datetime
SET @date='2015/1/4 00:00:00'
SELECT CAST(DATENAME(month,@date ) AS CHAR(3))AS 'Month Name'
यह आपको छोटे महीने का नाम देगा। जैसे: जन, फरवरी, मार्च, आदि।
यहाँ एक समस्या को हल करने के लिए दूसरों से कुछ जानकारी का उपयोग करके मेरा समाधान है।
datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname
SQL सर्वर में कोई सिस्टम परिभाषित फ़ंक्शन नहीं है। लेकिन आप अपना खुद का उपयोगकर्ता-परिभाषित फ़ंक्शन- एक स्केलर फ़ंक्शन बना सकते हैं। आपको अपने डेटाबेस के लिए ऑब्जेक्ट एक्सप्लोरर में स्केलर फ़ंक्शंस मिलेंगे: प्रोग्रामबिलिटी-> फ़ंक्शंस-> स्केलर-वैल्यू फ़ंक्शंस। नीचे, मैं इसे सभी को एक साथ लाने के लिए एक तालिका चर का उपयोग करता हूं।
--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]
मंथ को जेनरेट करने के लिए आप इस तरह का एक फंक्शन बना सकते हैं और सेलेक्ट कर सकते हैं dbo.fn_GetMonthFromDate (date_column) मंथ से टेबल_नाम के रूप में
/****** 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
सबसे आसान तरीका है फ़ंक्शन को कॉल करके MONTHNAME(your_date)। आपका_डेट एक स्थिर मूल्य या आपके टेबल फ़ील्ड में से एक मूल्य हो सकता है।
सही मंथन (संक्षिप्त नाम ('1970 -', [महीना int val], '- 01'))
उदाहरण- सेलेक्ट मंथन (संक्षिप्त नाम (1970 - 4, 4, '- 01'))
जवाब- अप्रैल