如何在SQL 2005中从一天的上午7点到下午7点平均数据?

时间:2011-09-30 19:42:03

标签: sql sql-server tsql time

  

可能重复:
  How to average/sum data in a day in SQL Server 2005

我有一组名为Dryer_Data的数据。每分钟记录一次该数据。我需要将其平均值 Dayshift :每天从早上7:40到晚上7:40,并且从7开始 Nightshift :第二天下午40点到第二天上午7点40分

时间戳温度
02/07/2011 12:01:00 AM 1246
02/07/2011 12:02:00 AM 1234
02/07/2011 12:03:00 AM 1387
02/07/2011 12:04:00 AM 1425
02/07/2011 12:05:00 AM 1263
...
02/07/2011 11:02:00 PM 1153
02/07/2011 11:03:00 PM 1348
02/07/2011 11:04:00 PM 1387
02/07/2011 11:05:00 PM 1425
02/07/2011 11:06:00 PM 1223
....
03/07/2011 12:01:00 AM 1226
03/07/2011 12:02:00 AM 1245
03/07/2011 12:03:00 AM 1384
03/07/2011 12:04:00 AM 1225
03/07/2011 12:05:00 AM 1363

我确实做过像

这样的事情

对于NIGHTShift:

    Select  CONVERT(char(10), timestamp, 121), average(temperature)
From Drye_data

Group by   CONVERT(char(10), timestamp, 121) 

Having   CONVERT(char(10), timestamp, 121)   BETWEEN DATEADD(minute, 40, DATEADD(hour, 19, @selectdate)) AND DATEADD(minute, 40, DATEADD(hour, 31, @selectdate)))

我相信它只能提供从早上12点到早上7点40分的数据。

对于DAYShift我做了:

Select  CONVERT(char(10), timestamp, 121), average(temperature)

From Drye_data

Group by   CONVERT(char(10), timestamp, 121) 

Having   CONVERT(char(10), timestamp, 121)   BETWEEN DATEADD(minute, 40, DATEADD(hour, 7, @selectdate)) AND DATEADD(minute, 40, DATEADD(hour, 19, @selectdate)))

当然,它没有给我任何价值。

或者不是使用CONVERT,而是使用DATEADD(hour, DATEDIFF(hour, 0, timestamp), 0),它给出了每小时的答案(每小时多个答案)。但我只需要1个结果。

或者当我使用DATEADD(day,DATEDIFF(day,0,timestamp),0)时,它给出了与CONVERT相同的答案。 请帮忙....非常感谢你。

0 个答案:

没有答案