Zamanı dikkate almadan tarih saat sütununa göre nasıl gruplandırabilirim?


221

Bir sürü ürün siparişim var ve tarihe göre gruplandırmaya ve o tarihin miktarını toplamaya çalışıyorum. Zaman bölümünü dikkate almadan aya / güne / yıla göre nasıl gruplandırabilirim?

3/8/2010 7:42:00 ile gruplandırılmalıdır 3/8/2010 4:15:00


2
Benzer olanlara da saatte grubu
Michael Freidgeim

Yanıtlar:


374

Değerleri Dategrubunuz için bir türe dönüştürün / dönüştürün .

GROUP BY CAST(myDateTime AS DATE)

3
aynı şeyi LINQ to SQL ile nasıl yapacağımı biliyor musunuz?
Muffin Man

1
@Nick - emin değilim. Kullanmayı deneyin DateTime.Date.
Oded

3
- Linq to Sql: DateTime.Date- Varlık Çerçevesi:EntityFunctions.TruncateTime(myDateTime)
Muffin Man

1
Katılıyorum, bir ORM bağlamında bunu soran Muffin Man'a cevap veriyordum.
Niels Brinch

4
Çok teşekkürler ... sorunumu çözdü. 'CAST grubuna göre gruplandır (tarih_T tarih değiştirildi)'. seçili cluase'e (CAST (tarih_Tarih olarak tarih_değiştirilmiş)) eklemeyi unutmayın.
Mohammed mansoor

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

Veya SQL Server 2008'den itibaren Date @Oded'in önerdiği gibi yayınlayabilirsiniz:

GROUP BY CAST(orderDate AS DATE)



2

Zaman bölümü olmadan belirli bir tarih için kayıt sayısını saymak gerektiğinde kullandığım bir örnek:

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 sözde olduğu gibi çalışmayacak çünkü gün olarak değerlendirilmeyecek, böylece güne göre
Silah X

2

İşte örnek oracle iyi çalışıyor

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

2

Bugüne kadar CAST tarih / saat alanı

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

0

Yılın ayının bu günü gruplamanız gerektiğine inanıyorum. neden TRUNK_DATE fonksiyonlarını kullanmıyorsunuz? Çalışma şekli aşağıda açıklanmıştır:

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

date_trunc PostgreSQL için değil SQL Server için hangi etiketleri gidiyor, OP SQL sunucusu için bir çözüm arıyordu.
Dave Hogan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.