मैं समय के कॉलम को ध्यान में रखे बिना कैसे कर सकता हूं


221

मेरे पास उत्पाद ऑर्डर का एक गुच्छा है और मैं उस तिथि तक समूह बनाने की कोशिश कर रहा हूं और उस तिथि के लिए मात्रा का योग कर रहा हूं। समय भाग को ध्यान में रखे बिना मैं महीने / दिन / वर्ष के हिसाब से कैसे समूह बना सकता हूं?

3/8/2010 7:42:00 के साथ समूहीकृत किया जाना चाहिए 3/8/2010 4:15:00


जवाबों:


374

Dateअपने समूह के लिए मानों को एक प्रकार में बदलें / लिखें।

GROUP BY CAST(myDateTime AS DATE)

3
क्या आप जानते हैं कि मैं LINQ से SQL के साथ समान कैसे करूंगा?
मफिन मैन

1
@ निक - निश्चित नहीं। प्रयोग करके देखें DateTime.Date
Oded

3
- लिन्क टू सक्ल: DateTime.Date- एंटिटी फ्रेमवर्क:EntityFunctions.TruncateTime(myDateTime)
मफिन मैन

1
मैं सहमत हूं, मैं द मफिन मैन को जवाब दे रहा था जो ORM संदर्भ में इसके बारे में पूछ रहा था।
नील्स ब्रिंच

4
बहुत बहुत धन्यवाद ... इसने मेरी समस्या हल कर दी। 'CAST (date_modified AS DATE) द्वारा समूह जोड़ा गया। चयन क्लूज़ में समान (CAST (date_modified AS DATE)) जोड़ना न भूलें।
मोहम्मद मंसूर

25
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)

या SQL Server 2008 में बाद में आप के Date रूप में @ सुझाव दिया जा सकता है:

GROUP BY CAST(orderDate AS DATE)

16

पूर्व Sql 2008 में तारीख का हिस्सा निकालकर:

GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)

2
कन्वर्ट फ़ंक्शन और दिनांक समय प्रकार (चार का अर्थ (8) और 10)) के बारे में स्पष्टीकरण के लिए, w3schools.com/sql/func_convert.asp
super1ha1


2

यहाँ एक उदाहरण है जिसका उपयोग मैंने तब किया जब मुझे समय भाग के बिना किसी विशेष तिथि के रिकॉर्ड की संख्या गिनने की आवश्यकता थी:

select count(convert(CHAR(10), dtcreatedate, 103) ),convert(char(10), dtcreatedate, 103)
FROM dbo.tbltobecounted
GROUP BY CONVERT(CHAR(10),dtcreatedate,103)
ORDER BY CONVERT(CHAR(10),dtcreatedate,103)

1
ORDER BY काम नहीं करेगा क्योंकि यह इसे तारीख के रूप में नहीं मानेगा इसलिए यह दिन के
हथियार X

2

यहाँ उदाहरण है कि ओरेकल में ठीक काम करता है

select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');

2

CAST डेटटाइम फ़ील्ड आज तक

select  CAST(datetime_field as DATE), count(*) as count from table group by CAST(datetime_field as DATE);

0

मेरा मानना ​​है कि आपको वर्ष के महीने के उस दिन में समूह बनाने की आवश्यकता है। तो क्यों TRUNK_DATE फ़ंक्शन का उपयोग नहीं किया जा रहा है। इसके काम करने का तरीका नीचे वर्णित है:

Group By DATE_TRUNC('day' , 'occurred_at_time')

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