SQL Server Server查询 - 计算不同的DateTime字段

OrE*_*lse 10 sql sql-server distinct

假设我们在SQL Server表中有以下记录.

Date
19/5/2009 12:00:00 pm
19/5/2009 12:15:22 pm
20/5/2009 11:38:00 am
Run Code Online (Sandbox Code Playgroud)

获取类似这样的东西的SQL语法是什么?

日期 计数
19/5/2009 2
20/5/2009 1

Rob*_*Day 15

您需要在日期字段的仅日期版本上进行任何分组,例如此类.

SELECT
    CONVERT(VARCHAR(10), YourDateColumn, 101),
    COUNT(*)
FROM
    YourTable
GROUP BY
    CONVERT(VARCHAR(10), YourDateColumn, 101)
Run Code Online (Sandbox Code Playgroud)

我通常会这样做,因为它避免了转换为varchar.

SELECT
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn),
    COUNT(*)
FROM
    YourTable
GROUP BY
    DATEPART(yy, YourDateColumn),
    DATEPART(mm, YourDateColumn),
    DATEPART(dd, YourDateColumn)
Run Code Online (Sandbox Code Playgroud)

编辑:另一种获取日期时间的日期部分的方法

DATEADD(d, 0, DATEDIFF(d, 0, YourDateColumn))
Run Code Online (Sandbox Code Playgroud)