假设我们在 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 语法是什么?
日期 计数
2009年 19 月 5 日 2
2009年 5 月 20 日 1
假设我们在 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 语法是什么?
日期 计数
2009年 19 月 5 日 2
2009年 5 月 20 日 1
您需要对日期字段的仅日期版本进行任何分组,例如这个。
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))
这将取决于您的数据库引擎。对于 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)
取决于您的DBMS。Mysql 示例:
SELECT DATE_FORMAT(dateColumn, '%e/%c/%Y') as `date`, COUNT(*)
FROM YourTable
GROUP BY `date`
你在用什么 RDBMS?使用 Sybase,您的查询将如下所示:
select date(datetimeColumn) as myDate, count(*) as myTotal
from thisTable
Group by myDate
Order by myTotal, myDate
在谷歌搜索后也找到了这个......
选择 CAST(FLOOR(CAST(Expr1 AS FLOAT)) AS DATEtime) AS Expr1,
COUNT(*) AS Expr2
来自 MY_TABLE
通过...分组
CAST(FLOOR(CAST(Expr1 AS FLOAT)) 作为日期时间)
缺点?
谢谢你们