2

可能重复:
SQL Query Group By Datetime 问题?

我正在开发一个包含 2 个步骤的应用程序。

  • 扫描日志并将其中的数据保存在数据库中。
  • 从数据库中读取数据并可视化数据。

第一步或多或少已经完成。我试图用第二步来解释背景和我的要求。

数据库中的每一行都包含一些信息,如 logdate、logfilename、LogType、logMessage 等。所以我想例如编写 SQL 来总结每天给定的 LogType。

这是列:

[LogDate] [datetime] NOT NULL,
[Computer] [varchar](50) NOT NULL,
[Type] [varchar](50) NOT NULL,
[FileName] [varchar](100) NOT NULL,
[LineNo] [int] NOT NULL,
[UserName] [varchar](50) NOT NULL,
[Message] [varchar](max) NOT NULL,

如果我想使用 Type=TDBError 显示所有行,我想输出可能是这样的:

Date        Sum
2012-10-01  3
2012-10-02  12
2012-10-03  40
2012-10-05  24
2012-10-06  18

因此,在日期 2012-10-01,DB 中有 3 行 Type=TDBError。在日期 2012-10-02 有 12 个等。

我应该如何为此编写 SQL?

4

4 回答 4

1
Select Cast(FLOOR(CAST(DATE as float)) as DateTime) as Date,COUNT(*) as [SUM]
from Log_Table_Name
Group by Cast(FLOOR(CAST(DATE as float)) as DateTime)
order by Cast(FLOOR(CAST(DATE as float)) as DateTime)  
于 2013-01-16T20:33:43.567 回答
1

GROUP BY DATEPART(day, date), DATEPART(month, date), DATEPART(year, date)

于 2013-01-16T20:28:57.427 回答
1

假设 SQL Server 2008 或更新版本:

SELECT 
  [Date] = CONVERT(DATE, LogDate), 
  [Sum] = COUNT(*)
FROM dbo.Log_Table_Name
WHERE [Type] = 'DBError'
GROUP BY CONVERT(DATE, LogDate)
ORDER BY [Date];
于 2013-01-16T20:29:49.220 回答
1

你可以按时间分组

GROUP BY date(log_date), month(log_date), day(log_date)
于 2013-01-16T20:30:48.047 回答