मेरे पास दो क्षेत्रों के साथ एक तालिका है - datetime
और int
। मैं datetime
केवल घंटे और मिनट की अनदेखी करने की तारीख पर एक समूह बनाना चाहता हूं । SELECT
बयान एक तारीख है कि एक ही दिन के पूर्णांक के योग के नक्शे लौटना चाहिए।
जवाबों:
SELECT CAST(Datetimefield AS DATE) as DateField, SUM(intfield) as SumField
FROM MyTable
GROUP BY CAST(Datetimefield AS DATE)
select convert(convert(int, getdate()), datetime)
गलत वाक्यविन्यास त्रुटि के साथ विफल
जैसा कि उसने निर्दिष्ट नहीं किया है कि वह एसक्यूएल सर्वर के किस संस्करण का उपयोग करता है ( date
प्रकार 2005 में उपलब्ध नहीं है), कोई भी उपयोग कर सकता है
SELECT CONVERT(VARCHAR(10),date_column,112),SUM(num_col) AS summed
FROM table_name
GROUP BY CONVERT(VARCHAR(10),date_column,112)
DATEADD(dd, DATEDIFF(dd, 0, date_field),0)
मैं उन विकल्पों पर शोध कर रहा हूं जो मुझे यह करना होगा, हालांकि, मेरा मानना है कि मेरे द्वारा उपयोग की जाने वाली विधि सबसे सरल है:
SELECT COUNT(*),
DATEADD(dd, DATEDIFF(dd, 0, date_field),0) as dtgroup
FROM TABLE
GROUP BY DATEADD(dd, DATEDIFF(dd, 0, date_field),0)
ORDER BY dtgroup ASC;
- मुझे डेटा टाइप और फॉर्मेट डेट टाइम डेटा टाइप के अनुरूप बना रहता है
;with cte as(
select
cast(utcdate as date) UtcDay, DATEPART(hour, utcdate) UtcHour, count(*) as Counts
from dbo.mytable cd
where utcdate between '2014-01-14' and '2014-01-15'
group by
cast(utcdate as date), DATEPART(hour, utcdate)
)
select dateadd(hour, utchour, cast(utcday as datetime)) as UTCDateHour, Counts
from cte
व्यक्तिगत रूप से मैं प्रारूप फ़ंक्शन पसंद करता हूं, आपको बस तारीख के हिस्से को बहुत आसानी से बदलने की अनुमति देता है।
declare @format varchar(100) = 'yyyy/MM/dd'
select
format(the_date,@format),
sum(myfield)
from mytable
group by format(the_date,@format)
order by format(the_date,@format) desc;