2つのフィールド(datetime
と)を持つテーブルがありますint
。datetime
時間と分を無視して、日付だけでグループを作りたいです。SELECT
声明は、一日のint型の合計にマップする日付を返す必要があります。
回答:
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)
間違った構文エラーで失敗する
使用するSQLサーバーのバージョンを指定しなかったため(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