web-dev-qa-db-ja.com

時間を考慮せずに日時列でグループ化する方法

製品の注文がたくさんあり、日付でグループ化してその日の数量を合計しようとしています。時間の部分を考慮せずに月/日/年でグループ化するにはどうすればよいですか?

3/8/2010 7:42:003/8/2010 4:15:00とグループ化する必要があります

184
The Muffin Man

キャスト/変換 あなたのグループのための Date 型への値。

GROUP BY CAST(myDateTime AS DATE)
316
Oded
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)

あるいはSQL Server 2008以降では@Odedが示唆するように単にDateにキャストすることができます。

GROUP BY CAST(orderDate AS DATE)
24
Mitch Wheat

SQL 2008より前の日付部分を取り出すことで:

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

GROUP BY DATE(date_time_column)

4
Aravindh Gopi

これは、時間部分なしで特定の日付のレコード数を数える必要があるときに使用した例です。

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)
2
user3169774

これは、Oracleで正常に動作する例です。

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