假设我们在SQL Server表中有以下记录。
Date
19/5/2009 12:00:00 pm
19/5/2009 12:15:22 pm
20/5/2009 11:38:00 am
获取类似这样的SQL语法是什么?
日期 计数
19/5/2009 2
20/5/2009 1
答案 0 :(得分:15)
您需要在日期字段的仅日期版本上进行任何分组,例如此。
SELECT
CONVERT(VARCHAR(10), YourDateColumn, 101),
COUNT(*)
FROM
YourTable
GROUP BY
CONVERT(VARCHAR(10), YourDateColumn, 101)
我通常这样做,因为它避免了转换为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)
编辑:另一种获取日期时间日期部分的方法
DATEADD(d, 0, DATEDIFF(d, 0, YourDateColumn))
答案 1 :(得分:3)
这取决于您的数据库引擎。对于SQL Server 2008(以及将来的版本),您可以使用date
类型执行此操作。
select
convert(date, date_column_name) as Date,
count(1) as Count
from table_name
group by convert(date, date_column_name)
答案 2 :(得分:1)
取决于您的DBMS。 Mysql示例:
SELECT DATE_FORMAT(dateColumn, '%e/%c/%Y') as `date`, COUNT(*)
FROM YourTable
GROUP BY `date`
答案 3 :(得分:0)
你在使用什么RDBMS?使用Sybase,您的查询将如下所示:
select date(datetimeColumn) as myDate, count(*) as myTotal
from thisTable
Group by myDate
Order by myTotal, myDate
答案 4 :(得分:0)
谷歌搜索后发现了这个......
SELECT CAST(FLOOR(CAST(Expr1 AS FLOAT))AS DATEtime)AS Expr1,
COUNT(*)AS Expr2
FROM MY_TABLE
GROUP BY
CAST(FLOOR(CAST(Expr1 AS FLOAT))AS DATEtime)
缺点?
谢谢大家