製品の注文がたくさんあり、日付でグループ化してその日の数量を合計しようとしています。時間の部分を考慮せずに月/日/年でグループ化するにはどうすればよいですか?
3/8/2010 7:42:00
は3/8/2010 4:15:00
とグループ化する必要があります
GROUP BY DATEADD(day, DATEDIFF(day, 0, MyDateTimeColumn), 0)
あるいはSQL Server 2008以降では@Odedが示唆するように単にDate
にキャストすることができます。
GROUP BY CAST(orderDate AS DATE)
SQL 2008より前の日付部分を取り出すことで:
GROUP BY CONVERT(CHAR(8),DateTimeColumn,10)
GROUP BY DATE(date_time_column)
これは、時間部分なしで特定の日付のレコード数を数える必要があるときに使用した例です。
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)
これは、Oracleで正常に動作する例です。
select to_char(columnname, 'DD/MON/yyyy'), count(*) from table_name group by to_char(createddate, 'DD/MON/yyyy');