Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 按小时对列求和(使用DATETIME列)_Sql_Sql Server - Fatal编程技术网

Sql 按小时对列求和(使用DATETIME列)

Sql 按小时对列求和(使用DATETIME列),sql,sql-server,Sql,Sql Server,我有一个数据库,需要使用datetime列对2个值求和。例如: Date Offered 4/16/2012 08:00:00 2 4/16/2012 08:30:00 18 4/16/2012 09:00:00 14 4/16/2012 09:30:30 42 我需要将08:00:00与08:30:00总计:20和09:00:00与09:30:00总计:56相加,依此类推。使用DatePart函数。 语法取决于您

我有一个数据库,需要使用datetime列对2个值求和。例如:

Date                Offered
4/16/2012 08:00:00        2
4/16/2012 08:30:00       18
4/16/2012 09:00:00       14
4/16/2012 09:30:30       42
我需要将08:00:00与08:30:00总计:20和09:00:00与09:30:00总计:56相加,依此类推。

使用DatePart函数。 语法取决于您的数据库

Select DatePart("year", Date), Sum(Offered)
From table1
Group By DatePart("year", Date)
使用DatePart函数。 语法取决于您的数据库

Select DatePart("year", Date), Sum(Offered)
From table1
Group By DatePart("year", Date)
你的伪代码

Select HOUR(date), sum(offered) as sumO
FROM YourTable
Group By Hour(date)
Hourdate需要更改为您正在使用的数据库的正确语法。

您的伪代码

Select HOUR(date), sum(offered) as sumO
FROM YourTable
Group By Hour(date)

Hourdate需要更改为您正在使用的数据库的正确语法。

这应该适合您

select datepart(hour,myDate), SUM(Offered)
from myTable
group by 
    datepart(hour,myDate), 
    dateadd(d, 0, datediff(d, 0, myDate))

如果你想把时间和日期按一天进行汇总,你需要按小时和日期进行分组,否则你将包括其他日期,如4月15日等。

这应该适合你

select datepart(hour,myDate), SUM(Offered)
from myTable
group by 
    datepart(hour,myDate), 
    dateadd(d, 0, datediff(d, 0, myDate))
SELECT [Hour] = DATEPART(HOUR, [Date]), Offered = SUM(Offered)
  FROM dbo.table_name
  WHERE [Date] >= '20120416'
  AND [Date] < '20120417'
  GROUP BY DATEPART(HOUR, [Date])
  ORDER BY [Hour];

如果您希望按天进行汇总,则需要按小时和日期进行分组,否则将包括其他日期,如4月15日等。

您使用的是哪个数据库?MySql、SQL Server、Oracle?您使用的是哪种数据库?MySql、SQL Server、Oracle?听起来他想按小时计算,而不是按年计算。类似的概念,但你可能想检查它是否是同一个日期。我想按小时计算,并确保它也是同一个日期。谢谢听起来他想按小时计算,而不是按年计算。类似的概念,但你可能想检查它是否是同一个日期。我想按小时计算,并确保它也是同一个日期。谢谢我不认为这很有帮助,因为它只在一天内有效。@Stefan,呃,它只在一天内有效,因为这是示例使用的日期范围。你可以把任何日期范围放在那里。我认为这不是很有帮助,因为它只适用于一天。@Stefan,呃,它只适用于一天,因为这是示例中使用的日期范围。你可以把任何日期范围放在那里。
SELECT [Hour] = DATEPART(HOUR, [Date]), Offered = SUM(Offered)
  FROM dbo.table_name
  WHERE [Date] >= '20120416'
  AND [Date] < '20120417'
  GROUP BY DATEPART(HOUR, [Date])
  ORDER BY [Hour];