[英]CONVERT Time from {yyyy-mm-dd hh:mm:ss} to {yyyy-mm-dd hh}
I am trying to extract data from a large SQL DB on hourly basis. 我试图每小时从大型SQL DB中提取数据。 The following query is giving me a grouping on minute basis.
以下查询为我提供了按分钟分组的信息。 I wish to group by the data on hourly basis.
我希望按小时对数据进行分组。
select CONVERT(VARCHAR(20), t.counterTime, 100) as [Time],
t.instanceName
from table as t
WHERE t.counterId= @counterId
and t.counterTime >= @startTime
and t.counterTime < @endTime
group by t.instanceName, CONVERT(VARCHAR(20), t.counterTime, 100)
The documentation also does not provide any such option. 该文档也未提供任何此类选项。 Any ideas?
有任何想法吗?
Try like this, 这样尝试
--SQL Server 2012
SELECT FORMAT(t.counterTime, 'yyyy-MM-dd HH') AS [Time]
,t.instanceName
FROM TABLE AS t
WHERE t.counterId = @counterId
AND t.counterTime >= @startTime
AND t.counterTime < @endTime
GROUP BY t.instanceName
,FORMAT(t.counterTime, 'yyyy-MM-dd HH')
--for earlier versions
SELECT CONVERT(CHAR(13), t.counterTime, 120) AS [Time]
,t.instanceName
FROM TABLE AS t
WHERE t.counterId = @counterId
AND t.counterTime >= @startTime
AND t.counterTime < @endTime
GROUP BY t.instanceName
,CONVERT(CHAR(13), t.counterTime, 120)
Note: Format would be perfoming slower.
您可以使用以下子字符串:
select substring(field,1,4) + '-'+ substring(field,6,2) +'-'+ substring(field,7,2)+' '+ substring(field,9,2) from dbo.youtable
Try this 尝试这个
select datepart(hour,t.counterTime) as [Time],
t.instanceName
from table as t
WHERE t.counterId= @counterId
and t.counterTime >= @startTime
and t.counterTime < @endTime
group by t.instanceName, datepart(hour,t.counterTime)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.