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
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
Yanıtlar:
Değerleri Date
grubunuz için bir türe dönüştürün / dönüştürün .
GROUP BY CAST(myDateTime AS DATE)
DateTime.Date
.
DateTime.Date
- Varlık Çerçevesi:EntityFunctions.TruncateTime(myDateTime)
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)
Sql 2008 öncesi Tarih bölümünü çıkararak:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
GROUP BY DATE(date_time_column)
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)
İş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');
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')