有个表 如下
ActionID Action UpdateTime
1 A 2008/1/28 21:21:00
2 B 2008/1/28 21:22:00
3 A 2008/1/28 21:23:00
4 A 2008/1/28 22:23:00
5 B 2008/1/28 22:24:00
我需要一个方法或者一条SQL语句达到以下效果 (按时间分组,取Action=A的Count)ACount UpdateTime
2 2008/1/28 21:00:00
1 2008/1/28 22:00:00 说白了就是不管DateTime类型中的分和秒的数据来进行分组。精确到小时,按小时分一个组。 谢谢了 ,大家也应该明白了我的意思吧?
ActionID Action UpdateTime
1 A 2008/1/28 21:21:00
2 B 2008/1/28 21:22:00
3 A 2008/1/28 21:23:00
4 A 2008/1/28 22:23:00
5 B 2008/1/28 22:24:00
我需要一个方法或者一条SQL语句达到以下效果 (按时间分组,取Action=A的Count)ACount UpdateTime
2 2008/1/28 21:00:00
1 2008/1/28 22:00:00 说白了就是不管DateTime类型中的分和秒的数据来进行分组。精确到小时,按小时分一个组。 谢谢了 ,大家也应该明白了我的意思吧?
解决方案 »
- odbc查询的速度很慢,求原因
- 求一解法,分不够我加
- 建立索引就为了提高搜索速度?
- 如何将 SQL2000 的数据库附加到 SQL7.0 ?
- 请问怎样在安装msde时安装数据库
- 错误提示:SqlDumpExceptionHandler: Process 9 generated fatal exception c000008e
- 求一条Sql语句,想了挺久,出不来,大家帮帮忙!
- 向大家请教一个问题,怎样在备分远程的数据库(SQL SERVER)时将备份路径选择为本地或者是自己指定的路径?
- 数据结构难题请教: 经营模式共有四类, 要求可以复选, 但查询时只许选择一种进行搜索?
- 新手求助:把文本文件导入到access数据库?看看代码吧。
- 两列值 ---->比较 ---> 选择性的更新
- 求一个递归函数的写法?
select convert(nvarchar(16),UpdateTime,120) as UpdateTime,count(*) as ACount
from T
where [Action]='A'
group by convert(nvarchar(16),UpdateTime,120)
create table T(
ActionID int,
[Action] nvarchar(10),
UpdateTime datetime
)
insert T select 1, 'A', '2008-01-28 21:21:00'
insert T select 2, 'B', '2008-01-28 21:22:00'
insert T select 3, 'A', '2008-01-28 21:23:00'
insert T select 4, 'A', '2008-01-28 22:23:00'
insert T select 5, 'B', '2008-01-28 22:24:00' select convert(nvarchar(13),UpdateTime,120) as UpdateTime,count(*) as ACount
from T
where [Action]='A'
group by convert(nvarchar(13),UpdateTime,120)
--result
UpdateTime ACount
------------- -----------
2008-01-28 21 2
2008-01-28 22 1(2 行受影响)
标准
输入/输出**
- 0 或 100 (*) 默认值 mon dd yyyy hh:miAM(或 PM)
1 101 美国 mm/dd/yyyy
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
2 102 ANSI yy.mm.dd
3 103 英国/法国 dd/mm/yy
4 104 德国 dd.mm.yy
5 105 意大利 dd-mm-yy
6 106 - dd mon yy
7 107 - mon dd, yy
8 108 - hh:mm:ss
- 9 或 109 (*) 默认值 + 毫秒 mon dd yyyy hh:mi:ss:mmmAM(或 PM)
10 110 美国 mm-dd-yy
11 111 日本 yy/mm/dd
12 112 ISO yymmdd
- 13 或 113 (*) 欧洲默认值 + 毫秒 dd mon yyyy hh:mm:ss:mmm(24h)
14 114 - hh:mi:ss:mmm(24h)
- 20 或 120 (*) ODBC 规范 yyyy-mm-dd hh:mm:ss[.fff]
- 21 或 121 (*) ODBC 规范(带毫秒) yyyy-mm-dd hh:mm:ss[.fff]
- 126(***) ISO8601 yyyy-mm-dd Thh:mm:ss:mmm(不含空格)
- 130* 科威特 dd mon yyyy hh:mi:ss:mmmAM
- 131* 科威特 dd/mm/yy hh:mi:ss:mmmAM
declare @T table (
ActionID int,
[Action] nvarchar(10),
UpdateTime datetime
)
insert @T select 1, 'A', '2008-01-28 21:21:00'
insert @T select 2, 'B', '2008-01-28 21:22:00'
insert @T select 3, 'A', '2008-01-28 21:23:00'
insert @T select 4, 'A', '2008-01-28 22:23:00'
insert @T select 5, 'B', '2008-01-28 22:24:00' select
convert(varchar(10),UpdateTime,21) as 日期,
datepart(hh,UpdateTime) as 小时,--加多一列显示小时
[Action] ,
count(*) as 记录
from
@T
where
[Action]='A'
group by [Action],convert(varchar(10),UpdateTime,21),datepart(hh,UpdateTime)
日期 小时 Action 记录
---------- ----------- ---------- -----------
2008-01-28 21 A 2
2008-01-28 22 A 1(所影响的行数为 2 行)