PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

महीनों को छाँटते हुए उन्हें पाठ में परिवर्तित कर रहा हूँ

मेरा सुझाव है date_trunc() बजाय। यह date . को छोटा कर देता है / timestamp दी गई इकाई के लिए।

दो कारणों से:

  1. आप किसी विशेष वर्ष के अगस्त में ऑर्डर की संख्या चाहते हैं, जैसे 2012, नहीं तालिका में सभी वर्षों के अगस्त के लिए योग। date_trunc('month', orderdate) ठीक यही करता है और रोकता है कि आप दुर्घटना से कई वर्षों को मिलाते हैं। आपको कई वर्षों के लिए कई पंक्तियाँ मिलती हैं।

  2. आप दोनों ORDER BY . कर सकते हैं और GROUP BY यह एक अभिव्यक्ति, क्वेरी थोड़ी तेज है।

SELECT to_char(date_trunc('month', orderdate), 'Mon') AS "Month" -- repeat expr.
      ,count(*) AS "Quantity"
FROM   orders
GROUP  BY date_trunc('month', orderdate)   -- 1 item covers it
ORDER  BY date_trunc('month', orderdate);

db<>fiddle यहां
पुराना sqlfiddle

पूरे महीने के नामों के लिए, जैसे आपका पहला उदाहरण दर्शाता है:

to_char(date_col, 'Month')

गैर-अंग्रेज़ी, स्थानीय नामों के लिए:

to_char(date_col, 'TMMonth')

मैनुअल में विवरण।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgresQL SQL:परिणामों को सरणी में परिवर्तित करना

  2. समय क्षेत्र के बिना यूनिक्स टाइमस्टैम्प को टाइमस्टैम्प में बदलें

  3. पंक्ति प्रकार की जाँच करते समय IS NOT NULL गलत क्यों है?

  4. SQL/XML पर XPath1, तत्वों की गिनती खाली लौटाती है

  5. क्या linux के लिए कोई अच्छा PostgreSQL क्लाइंट हैं?