SQL सर्वर क्वेरी में महीना का नाम लौटना


81

का उपयोग करते हुए SQL Server 2008, मेरे पास एक क्वेरी है जिसका उपयोग दृश्य बनाने के लिए किया जाता है और मैं पूर्णांक के बजाय एक महीने का नाम प्रदर्शित करने का प्रयास कर रहा हूं ।

मेरे डेटाबेस में, datetimeएक कॉलम में है OrderDateTime। दिनांक लौटाने वाले क्वेरी में पंक्तियाँ हैं:

DATENAME(yyyy, S0.OrderDateTime) AS OrderYear,
DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

यह वर्षों का एक कॉलम और पूर्णांक के रूप में महीनों का एक कॉलम लौटाता है। मैं महीने के नाम वापस करना चाहता हूं (Jan, Feb, etc)। मैंने कोशिश की:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

यह स्पष्ट रूप से गलत है, जैसा कि मुझे मिलता है

'AS' के पास गलत सिंटैक्स

संदेश। मेरी क्वेरी के लिए उचित सिंटैक्स क्या है?


8
गलत सिंटैक्स संदेश अंतिम कोष्ठक के बंद नहीं होने के कारण होता है AS-CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime)) AS OrderMonth
Jaymz

Sql क्वेरी में S0 का मतलब क्या है
user7157710

@ user7157710 S0 टेबल पर दिया गया उपनाम है जहां फ़ील्ड स्थित है।
tia97

जवाबों:


155

यह आपको महीने का पूरा नाम देगा।

select datename(month, S0.OrderDateTime)

यदि आप केवल पहले तीन अक्षर चाहते हैं तो आप इसका उपयोग कर सकते हैं

select convert(char(3), S0.OrderDateTime, 0)

टिप्पणी गलत तरीके से उत्तर में पोस्ट की गई है "sql क्वेरी में S0 का मतलब क्या है?" user7157710
फ्रीबर्ग

1
S0 एक तालिका के लिए एक उपनाम है। जवाब सवाल से ले जा रहा है।
Bpainter

मैं इसे जोड़ना चाहता हूँ, आम तौर पर, आप इन कार्यों का उपयोग भी नहीं करना चाहते हैं। आप तारीख (समय) या महीने को पूर्णांक या जो कुछ भी हो, का चयन करने से बेहतर हैं और फिर अपने UI को मानव-अनुकूल माह नाम में परिवर्तित करने का ध्यान रखें। इस तरह से आपका एप्लिकेशन / UI आपके डेटाबेस के बजाय स्थानीयकरण का ध्यान रख सकता है, जिसमें आपके उपयोगकर्ता की प्राथमिकताओं या स्थानीयकरण के लिए एप्लिकेशन की सेटिंग का कोई मामूली सुराग नहीं है। इसे दूसरे तरीके से रखने के लिए, इसके बारे में इस तरह से सोचें: क्या होगा अगर आपका उपयोगकर्ता चीनी in को पसंद करता है?
RobIII


12

परिवर्तन:

CONVERT(varchar(3), DATEPART(MONTH, S0.OrderDateTime) AS OrderMonth

सेवा:

CONVERT(varchar(3), DATENAME(MONTH, S0.OrderDateTime)) AS OrderMonth

मुझे लगता है कि आपका मतलब है DATENAMEDATEPARTनहीं करेंगे।
Druid




1

यह आपको बताएगा कि आप किस चीज के लिए अनुरोध कर रहे हैं:

select convert(varchar(3),datename(month, S0.OrderDateTime)) 


0

Db को हिट किए बिना हम सभी महीनों के नाम प्राप्त कर सकते हैं।

WITH CTE_Sample1 AS
(
    Select 0 as MonthNumber

    UNION ALL

    select MonthNumber+1 FROM CTE_Sample1
        WHERE MonthNumber+1<12
)

Select DateName( month , DateAdd( month , MonthNumber ,0 ) ) from CTE_Sample1

0

मूल रूप से यह ...

declare @currentdate datetime = getdate()
select left(datename(month,DATEADD(MONTH, -1, GETDATE())),3)
union all
select left(datename(month,(DATEADD(MONTH, -2, GETDATE()))),3)
union all
select left(datename(month,(DATEADD(MONTH, -3, GETDATE()))),3)


0

मेरे लिए DATENAME कंपनी प्रतिबंधों के कारण सुलभ नहीं था .... लेकिन इसने बहुत आसान काम किया।

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