এসকিউএল এ মাসের নাম ফাংশনে রূপান্তর করুন মাসের নম্বর


210

আমি এসকিউএল সার্ভারে 1,2,3,4, ... 12 হিসাবে কয়েক মাস সঞ্চয় করে রেখেছি। আমি তাদের জানুয়ারী, ফেব্রুয়ারী ইত্যাদি হিসাবে প্রদর্শন করতে চাই এসকিউএল সার্ভারে মাসনাম (1) = জানুয়ারীর মতো কোনও ফাংশন রয়েছে? আমি যদি সম্ভব হয় তবে একটি CASE বিবৃতি এড়াতে চেষ্টা করছি।

উত্তর:


158

একটু হ্যাকি তবে কাজ করা উচিত:

SELECT DATENAME(month, DATEADD(month, @mydate-1, CAST('2008-01-01' AS datetime)))

2
কেন '-1'? এসকিউএল সার্ভারে মাসগুলি একের পর এক অফসেট হওয়ার কারণে এটির কী দরকার?
হাসান গুলজার

2
@ ডুমারডিজিআর 8 এটি আসলে কারণ ডেটেডড ফাংশনটি বীজ করার জন্য যে তারিখটি ব্যবহার করা হচ্ছে তা ১ থেকে শুরু হবে if ফেব্রুয়ারি। সুতরাং আমরা এটির জন্য অ্যাকাউন্টে 1 টি বিয়োগ করি এবং আমরা আবার জানুয়ারী পাই।
ডিফোর্ড 42

আপনার তারিখের সময় থেকে 1 টি বিয়োগ করার সমস্যাটি পেতে, জানুয়ারীর বিপরীতে ডিসেম্বরে একটি ডেটটাইম ব্যবহার করুন। উদাহরণস্বরূপ নির্বাচন করুন তারিখ (মাস, DATEADD (মাস, @ মাইডেট, কাস্ট ('1978-12-01' AS তারিখের সময়)))
স্টিভ ম্যাথিউজ

3
এটি তথ্যের একটি ভাল অংশ, তবে কোনও মাসের নাম্বারটিকে কীভাবে একটি মাসের নাম রূপান্তর করা যায় (বরং একটি তারিখ থেকে মাসের নাম কীভাবে পাওয়া যায় তার উত্তর দেয়) এর প্রশ্নের উত্তর দিতে ব্যর্থ। আপনি ধরে নিয়েছেন যে কেবলমাত্র মাসের সংখ্যার চেয়ে তার ডেটটাইম মান রয়েছে; এটি কাজ করতে আপনাকে এখন একটি তারিখ / সময় মান 'আবিষ্কার' করতে হবে। মনে leoinfo থেকে সমাধান ছিল একটি বিট আরো প্রাসঙ্গিক
schizoid04

277

আমি মনে করি আপনার যখন মাসের নম্বর থাকবে তখন মাসের নামটি পাওয়ার সেরা উপায়

Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )

অথবা

Select DateName( month , DateAdd( month , @MonthNumber , -1 ) )

24
পঠনযোগ্যতার জন্য আমি আসলে এটি লিখতে চাই: তারিখের নামটি নির্বাচন করুন (মাস, তারিখ অ্যাড (মাস, @ মন্টথম্বার - 1, '1900-01-01'))
ভ্যালেন্টিনো ভ্রানকেন

10
একটি সম্ভাব্য বিকল্প সমাধান তারিখের নাম নির্বাচন করুন (মাস, তারিখ অ্যাড করুন (মাস, @ মন্টনম্বার, -১))
আসিফ

4
এটা নিখুঁত. এই উত্তর হওয়া উচিত।
gotqn

94
SELECT DATENAME(month, GETDATE()) AS 'Month Name'

3
এটি তারিখের সাথে মাসের নাম নয় মাসের নাম হিসাবে এসও জিজ্ঞাসা করেছে।
ইমাদ

72
SUBSTRING('JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC ', (@intMonth * 4) - 3, 3)

9
আমি এই খুব বাম-ফিল্ড বিকল্প উপায় পছন্দ করি! চিন্তার জন্য খাদ্য
মাইকেল রডরিগস

2
এবং এটি নির্বিচারবাদী! গণিত কলাম হিসাবেও ব্যবহার করা যেতে পারে, ধন্যবাদ!
ইরান সোতোমো

1
সুন্দর ... আমি জান থেকে [#] মাস পেতে কিছু সাধারণ কোড খুঁজছিলাম এবং এটি দুর্দান্ত কাজ করেছে। বেশ কয়েক মাস প্রদর্শনের জন্য, কেবল এই জাতীয় কিছুতে পরিবর্তন করুন >> জমা দিন ('জান ফেব মার এপ্রি মে জুন জুল আগস্ট এসিটি নট ডিসি', 0, (@মনিথ * 4))
পাবলো কনট্রেরাস

2
আমি অবশ্যই এটিকে "সঠিক উপায়" হিসাবে ভাবব না তবে এটি একটি মজাদার উপায় যা অন্যান্য সমস্যাগুলি সমাধান করার জন্য ব্যবহার করা যেতে পারে।
পল

31

সেরা উপায় ব্যবহার করুন

Select DateName( month , DateAdd( month , @MonthNumber , -1 ))

21

এটা খুব সহজ।

select DATENAME(month, getdate())

আউটপুট: জানুয়ারী


4
এটি কেবলমাত্র যদি আপনার পূর্ণ তারিখের মান থাকে তবে এক মাসের পূর্ণসংখ্যার কাজ করে না।
gunr2171

2
এটি প্রশ্নের উত্তর নয়। তিনি জিজ্ঞাসা করছেন কিভাবে মাসনামের (1) মত একটি ফাংশন বাস্তবায়ন করতে হয়।
আমুলিয়ার

8

আপনি ইনবিল্ট CONVERTফাংশনটি ব্যবহার করতে পারেন

select CONVERT(varchar(3), Date, 100)  as Month from MyTable.

এটি মাসের প্রথম 3 টি অক্ষর প্রদর্শন করবে (জ্যান, ফেব ইত্যাদি।)


7

মূল ছাড়াও

SELECT DATENAME(m, str(2) + '/1/2011')

তুমি এটি করতে পারো

SELECT DATENAME(m, str([column_name]) + '/1/2011')

এইভাবে আপনি একটি সারণীতে সমস্ত সারিগুলির জন্য নাম পান। যেখানে [কলাম_নাম] সংখ্যার মান 1 থেকে 12 এর মধ্যে একটি পূর্ণসংখ্যা কলাম প্রতিনিধিত্ব করে

2 কোনও পূর্ণসংখ্যার প্রতিনিধিত্ব করে, পরিচিতি স্ট্রিংয়ের মাধ্যমে আমি একটি তারিখ তৈরি করি যেখানে আমি মাসে বের করতে পারি। '/ 1/2011' কোনও তারিখ হতে পারে

আপনি যদি ভেরিয়েবলের সাথে এটি করতে চান

DECLARE @integer int;

SET @integer = 6;

SELECT DATENAME(m, str(@integer) + '/1/2011')

7

নিম্নলিখিতটি আমার পক্ষে কাজ করে:

CAST(GETDATE() AS CHAR(3))

6

মাসের সংখ্যাসূচক মানকে মাসের নামে রূপান্তর করতে এই বিবৃতিটি ব্যবহার করুন।

SELECT CONVERT(CHAR(3), DATENAME(MONTH, GETDATE()))

যদি আমি ভুল না করি তবে এটি কোনও পূর্ণসংখ্যা ব্যবহার করবে না, যেমনটি ওপি বলেছে।
প্রভাবিত

5

হিব্রু জাতীয় কিছু স্থানীয় ক্ষেত্রে, বছরের উপর নির্ভরশীল লিপ মাস রয়েছে যাতে এই ধরনের লোকেলের ত্রুটিগুলি এড়াতে আপনি নিম্নলিখিত সমাধানটি বিবেচনা করতে পারেন:

SELECT DATENAME(month, STR(YEAR(GETDATE()), 4) + REPLACE(STR(@month, 2), ' ', '0') + '01')     

1
এসকিউএল-এ কোনও ইহুদি তারিখে কোনও তারিখকে রূপান্তর করার কোনও ফাংশন আছে কি? আমি জানি না ...
হিলা ডিজি

ইহুদি তারিখে রূপান্তর করার জন্য ফাংশন: ব্লগস.মাইক্রোসফট.কম.আইল
এজে এজে


5

SQL সার্ভার 2012 থেকে শুরু করে আপনি ব্যবহার করতে পারেন বিন্যাসে এবং 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

এই আমি খুঁজছি। সমাধানের জন্য আপনাকে ধন্যবাদ।
আব্দুল্লাহ আল মামুন

এটি সম্ভবত সবচেয়ে দক্ষ নয়, তবে এটি সম্ভবত সবচেয়ে সহজেই পঠনযোগ্য।
পল

1
এটি স্থানীয়করণকেও সমর্থন করে! .. মিষ্টি!
রোসদী কাশিম

4

আপনি নীচের মত রূপান্তর ফান্টিন ব্যবহার করতে পারেন

CONVERT(VARCHAR(3), DATENAME(MM, GETDATE()), 100)

4

আজকের তারিখ থেকে কেবল চলতি মাসকে বিয়োগ করুন, তারপরে আপনার মাসের নম্বরটি যুক্ত করুন। তারপরে ডেটনাম ফাংশনটি পুরো নামটি 1 লাইনে দেওয়ার জন্য ব্যবহার করুন।

print datename(month,dateadd(month,-month(getdate()) + 9,getdate()))

3

আমি মনে করি আপনার তারিখ পেলে মাসের নাম পাওয়ার জন্য এটি যথেষ্ট।

SELECT DATENAME(month ,GETDATE())


3

মাসের নামটি মাসের নামে রূপান্তর করতে, নীচে চেষ্টা করুন

declare @month smallint = 1
select DateName(mm,DATEADD(mm,@month - 1,0))


1

এই একজন আমার পক্ষে কাজ করেছেন:

@MetricMonthNumber (some number)

SELECT 
(DateName( month , DateAdd( month , @MetricMonthNumber - 1 , '1900-01-01' ) )) AS MetricMonthName
FROM TableName

@ লেইনফো এবং @ ভ্যালেন্টিনো ভ্রানকেনের উপরের পোস্ট থেকে। কেবলমাত্র একটি দ্রুত নির্বাচন করেছেন এবং এটি কাজ করে।


1
Declare @MonthNumber int
SET @MonthNumber=DatePart(Month,GETDATE())
Select DateName( month , DateAdd( month , @MonthNumber , 0 ) - 1 )

Explaination:

  1. প্রথম ডিক্যালার ভেরিয়েবল MonthNumber
  2. বর্তমান মাস পান DatePartযার জন্য রিটার্ন মাসের নম্বর Number
  3. তৃতীয় ক্যোয়ারী রিটার্ন মাসের নাম



1

আপনি এই মত তারিখ পেতে পারেন। যেমন: - ব্যবহারকারীদের সারণী

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                   |

আপনি এখানে ডকুমেন্টেশন খুঁজে পেতে পারেন। w3resource.com/mysql/date-and-time-funifications/…
জনক পুষ্পকুমারা

ওপি স্কেল-সার্ভারের জন্য মাইএসকিএল চেয়েছিল।
টাভ্যালেন্ডো

0

মাসের নাম পাওয়ার জন্য এই বিবৃতিটি ব্যবহার করুন:

DECLARE @date datetime
SET @date='2015/1/4 00:00:00'

SELECT CAST(DATENAME(month,@date )  AS CHAR(3))AS 'Month Name'

এটি আপনাকে স্বল্প মাসের নাম দেবে। এটি পছন্দ: জানু, ফেব্রুয়ারি, মার্চ ইত্যাদি etc.


0

সমস্যা সমাধানের জন্য অন্যদের কাছ থেকে কিছু তথ্য ব্যবহার করে আমার সমাধান এখানে is

datename(month,dateadd(month,datepart(month,Help_HelpMain.Ticket_Closed_Date),-1)) as monthname

0

এসকিউএল সার্ভারে কোনও সিস্টেম নির্ধারিত ফাংশন নেই। তবে আপনি নিজের ব্যবহারকারী সংজ্ঞায়িত ফাংশন তৈরি করতে পারেন - একটি স্কেলার ফাংশন। আপনি আপনার ডাটাবেসের জন্য অবজেক্ট এক্সপ্লোরারগুলিতে স্কেলার ফাংশনগুলি খুঁজে পাবেন: প্রোগ্রামযোগ্যতা-> ফাংশন-> স্কেলার-মূল্যবান ফাংশন। নীচে, আমি সমস্ত একসাথে আনতে একটি টেবিল ভেরিয়েবল ব্যবহার করি।

--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]

0

আপনি মাসটি উত্পন্ন করতে এই জাতীয় একটি ক্রিয়াকলাপ তৈরি করতে পারেন এবং dro.fn_GetMonthFromDate (তারিখ_পঞ্জি) টি মাসের FROM টেবিলের নাম হিসাবে নির্বাচন করুন


/****** 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


0

মাসে নির্বাচন করুন (কনক্যাট ('1970 -', [মাস ইন্ট ভ্যাল] ',' - 01 '))

উদাহরণস্বরূপ- নির্বাচন করুন নির্বাচন করুন (কনটাক্ট ('1970 -', 4, '- 01'))

উত্তর- এপ্রিল

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.