SQL DATE से केवल महीना और वर्ष प्राप्त करना


133

मुझे SQL Server में Date फ़ील्ड से केवल Month.Year तक पहुँचने की आवश्यकता है।

जवाबों:


170

साथ ही पहले से दिए गए सुझावों के अलावा, एक अन्य व्यवसाय है जिसे मैं आपके प्रश्न से समझ सकता हूं:
- आप अभी भी परिणाम की तारीख
चाहते हैं - लेकिन आप दिन, घंटे इत्यादि को 'त्याग' करना चाहते हैं
- एक वर्ष / महीना छोड़कर केवल दिनांक फ़ील्ड

SELECT
   DATEADD(MONTH, DATEDIFF(MONTH, 0, <dateField>), 0) AS [year_month_date_field]
FROM
   <your_table>

यह आधार तिथि (0) से पूरे महीनों की संख्या प्राप्त करता है और फिर उन्हें उस आधार तिथि में जोड़ देता है। इस प्रकार उस महीने के लिए नीचे की ओर राउंडिंग जिसमें तारीख है।

नोट: SQL Server 2008 में, आप अभी भी TIME को 00: 00: 00.000 के रूप में संलग्न करेंगे, यह बिल्कुल वैसा नहीं है, जैसा कि दिन और समय के किसी भी नोटेशन को "हटाना" है। इसके अलावा पहले करने के लिए सेट करें। जैसे 2009-10-01 00: 00: 00.000


1
यह मेरे लिए बिल्कुल काम नहीं किया। यह परिणाम के रूप में मुझे 2023-02-01 00: 00: 00.000 देता है।
14

1
@dss - किस मापदंडों के साथ? वास्तविक एसक्यूएल दिखाएँ और मैं एक नज़र के लिए खुश हूँ।
मैटबैली

@MatBailie SELECT DATEADD (MONTH, DatedIFF (MONTH, 0, LastSaleDate), 0) AS [year_month_date_field] से db1.products जहाँIDID = 123 है "LastSaleDate" कॉलम "के रूप में घोषित किया गया है (डेटाटाइम, शून्य)"। 2014-09-01 00: 00: 00.000
Dss

1
@ डीएसएस - हां, यह सही प्रतीत होता है। यह सितंबर 2014 की शुरुआत से ही कम हो रहा है। कोई "वर्ष और महीना केवल" डेटा प्रकार नहीं है, इसलिए प्रत्येक महीने के पहले क्षण का उपयोग करना मानक अभ्यास है। इस DATETIME मान को स्ट्रिंग में परिवर्तित करते समय (Aaplication Layer, Presentation Layer, Reporting Layer, आदि), आप हमेशा इसे केवल वर्ष और महीने के भागों के साथ प्रारूपित करना चुन सकते हैं। लेकिन "डेटाबेस" डेटा हेरफेर के संदर्भ में यह सही है।
मैटाबेली

मुझे लगता है कि शायद इसलिए कि आपके उत्तर का उपयोग "दिनांक" फ़ील्ड के साथ किया जाना था, लेकिन मैं "डेटाइम" फ़ील्ड का उपयोग कर रहा हूं ताकि संभवतः यह समस्या हो।
Dss

133
select month(dateField), year(dateField)

2
महान! आप उन्हें एक कॉलम से जोड़ सकते हैं: 'कास्ट (महीना (तारीख) को varchar के रूप में) +' चुनें। ' + कास्ट (वर्ष (तारीख) के रूप में varchar) '
izik f


32
SELECT DATEPART(yy, DateVal)
SELECT DATEPART(MM, DateVal)
SELECT DATENAME(MM, DateVal)

2
चयनित DATEPART (MM, DateVal) 'MM' वापस नहीं कर रहा है। यदि महीने 1-9 के बीच है तो इसका एकल अंक लौटाया जा सकता है।
जिक्रत

"MM" के बजाय इसे "महीना" कहना चाहिए: 'Select DATEPART (महीना, getdate ())'
REN007


15

इसे करने के लिए दो SQL फ़ंक्शन हैं:

विवरण के लिए लिंक किए गए दस्तावेज़ देखें।


5
मैं कम से कम कुछ संक्षिप्त उदाहरण रखने का सुझाव देता हूं क्योंकि लिंक हमेशा हमेशा नहीं रहते हैं ... वास्तव में वे अब अच्छे नहीं हैं।
कैरल

12

यह मददगार भी हो सकता है।

SELECT YEAR(0), MONTH(0), DAY(0);

या

SELECT YEAR(getdate()), MONTH(getdate()), DAY(getdate());

या

SELECT YEAR(yourDateField), MONTH(yourDateField), DAY(yourDateField);

वैसे भी वापसी के क्षेत्र में "0" को हटाने के लिए नहीं?
Si8


10
convert(varchar(7), <date_field>, 120)
because 120 results in 'yyyy-MM-dd' which is varchar(10)
using varchar(7) will display only year and month

example:
select convert(varchar(7), <date_field>, 120), COUNT(*)
from <some_table>
group by convert(varchar(7), <date_field>, 120)
order by 1

6

मैं आपके प्रश्न की दो तरह से व्याख्या कर रहा हूं।

क) आपको केवल माह और वर्ष की आवश्यकता है, जिस स्थिति में यहाँ उत्तर है

select 
        [YEAR] = YEAR(getdate())
        ,[YEAR] = DATEPART(YY,getdate())
        , [MONTH] = month(getdate())
        ,[MONTH] = DATEPART(mm,getdate())
        ,[MONTH NAME] = DATENAME(mm, getdate()) 

ख)

आप MONTH.YEAR प्रारूप '2009-11-24 09:01:55.483'में दी गई तिथि से प्रदर्शित करना चाहते हैं । इसलिए आउटपुट को इस मामले में आना चाहिए ।11.2009

यदि ऐसा माना जाता है, तो यह प्रयास करें (अन्य विकल्पों के बीच)

select [Month.Year] = STUFF(CONVERT(varchar(10), GETDATE(),104),1,3,'')

5

कुछ डेटाबेस जैसे कि फ़ंक्शंस का समर्थन MS ACCESSकर RODBCसकते हैं या नहीं कर सकते हैं SQL SERVER, लेकिन किसी भी डेटाबेस के लिए FORMATफ़ंक्शन है जो आप बस ऐसा कर सकते हैं:

SELECT FORMAT(<your-date-field>,"YYYY-MM") AS year-date FROM <your-table>


3
CONCAT (datepart (yy,DATE), FORMAT (DATE,'MM')) 

यदि आप छह अंकों का परिणाम चाहते हैं तो आप 201601 जैसे


2

इसे इस्तेमाल करे

select to_char(DATEFIELD,'MON') from YOUR_TABLE

जैसे।

select to_char(sysdate, 'MON') from dual

2

इसे इस्तेमाल करे:

पुर्तगाली

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'pt-pt') + ' ' + convert(varchar(10),year(getdate()),100)

परिणाम: maio 2019


अंग्रेज़ी

SELECT format(dateadd(month, 0, getdate()), 'MMMM', 'en-US') + ' ' + convert(varchar(10),year(getdate()),100)

परिणाम: मई 2019

यदि आप किसी अन्य भाषा में चाहते हैं, तो लिंक में से किसी में ' pt-pt ' या ' en-US ' बदलें


1

मुझे कुछ ऐसा ही करने की विशिष्ट आवश्यकता थी जहां यह महीने-वर्ष को दिखाएगा जो कि निम्नलिखित द्वारा किया जा सकता है:

SELECT DATENAME(month, GETDATE()) + '-' + CAST(YEAR(GETDATE()) AS nvarchar) AS 'Month-Year'

मेरे विशेष मामले में, मुझे इसे 2 अंक वर्ष के साथ 3 अक्षर महीने के संक्षिप्तिकरण के लिए नीचे लाने की आवश्यकता है, कुछ इस तरह से देख रहा है: SELECT LEFT(DATENAME(month, GETDATE()), 3) + '-' + CAST(RIGHT(YEAR(GETDATE()),2) AS nvarchar(2)) AS 'Month-Year'



0

मेरा डेटाबेस ऊपर दिए गए अधिकांश कार्यों का समर्थन नहीं करता, हालांकि मैंने पाया कि यह काम करता है:

SELECT * FROM table WHERE SUBSTR(datetime_column, starting_position, number_of_strings)=required_year_and_month;

उदाहरण के लिए: SELECT SUBSTR(created, 1,7) FROM table;

"yyyy-mm" प्रारूप में वर्ष और महीना लौटाता है


0

माह और तिथि से वर्ष प्राप्त करें

DECLARE @lcMonth nvarchar(10)
DECLARE @lcYear nvarchar(10)

SET @lcYear=(SELECT  DATEPART(YEAR,@Date))
SET @lcMonth=(SELECT  DATEPART(MONTH,@Date))


0

प्रश्न: - Select datename(m,GETDATE())+'-'+cast(datepart(yyyy,GETDATE()) as varchar) as FieldName

आउटपुट: - जनवरी -2019

सामान्य डेटफील्ड हम उपयोग कर सकते हैं

datename(m,<DateField>)+' '+cast(datepart(yyyy,<DateField>) as varchar) as FieldName


0
select convert(varchar(11), transfer_date, 106) 

मुझे दिनांक 07 मार्च 2018 के रूप में मेरा वांछित परिणाम मिला

मेरा कॉलम 'transfer_date' एक डेटाइम प्रकार का कॉलम है और मैं azure पर SQL Server 2017 का उपयोग कर रहा हूं


0

CONCAT (MONTH (GETDATE ()), '।, YEAR (GETDATE ()) का चयन करें

आउटपुट: 5.2020

CONCAT (DATENAME (MONTH, GETDATE ()), '।', YEAR (GETDATE ()) का चयन करें

आउटपुट: May.2020

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.