使用SQL Server,我有一个表,CreatedAt
其中包含一个具有datetime
数据类型的列.我正在尝试编写一个查询,该查询将返回每个日期的总记录,但也会将日期分为一天中的时间,即上午,下午和晚上.因此,例如,下表
ID createdAt
------------------------------
1 2017-10-17 21:31:52.160
2 2017-10-17 12:12:12.160
3 2017-10-17 09:09:09.160
4 2017-10-17 21:31:52.160
5 2017-10-16 21:31:52.160
Run Code Online (Sandbox Code Playgroud)
会返回以下结果
DayCounter SessionDay Morning Afternoon Evening
4 2017-10-17 1 1 2
1 2017-10-16 0 0 1
Run Code Online (Sandbox Code Playgroud)
我有以下两个查询按天分组数据,然后拆分从日期中提取时间,但我无法弄清楚如何将它们放在一起.
SELECT
COUNT(createdAt) AS counter,
CONVERT(DATE, createdAt) AS sessionDay
FROM
MyTable
GROUP BY
CONVERT(DATE, createdAt)
Run Code Online (Sandbox Code Playgroud)
和
SELECT
CASE
WHEN CAST(CONVERT(CHAR(2), createdAt, 108) AS INT) < 12
THEN 'Morning'
WHEN CAST(CONVERT(CHAR(2), createdAt, 108) AS INT) < 17
THEN 'Afternoon'
ELSE 'Evening' …
Run Code Online (Sandbox Code Playgroud)