我有以下SQL(SQL Server 2005),可用于计算每一列的总时间:
DECLARE @Param1 DATETIME
DECLARE @Param2 DATETIME
DECLARE @Param3 DATETIME
SET @Param1 = '2009-01-01'
SET @Param2 = '2009-09-09'
SELECT SUM(IdleSec) AS TotalIdleSec,
SUM(ProductionSec) AS TotalProductionSec,
SUM(UplineSec) AS TotalUplineSec,
SUM(DownlineSec) AS TotalDownlineSec,
SUM(UserSec) AS TotalUserSec
FROM Job
WHERE (DateTime >= dbo.FormatDateTime(@Param1, 'yyyy-mm-dd'))
AND
(DateTime < dbo.FormatDateTime(@Param2, 'yyyy-mm-dd'))
GO
这将为上面的项目返回一个包含 1行 的表格,并且效果很好。
我有点不确定如何返回每天/每周/每月的SUM值表,即
日期范围之间每天的所有值的总和。
日期范围内每个WEEK的所有值的总和。
日期范围之间每个MONTH的所有值的总和。
我敢肯定有一个简单的方法可以做到这一点,但我不确定。我看过一些使用DAY(date)命令的教程,但我尝试过,似乎无法获得所需的东西。
我期待着您的出色帮助。
您将GROUP BY子句添加到查询中:
按MONTH:
SELECT SUM(IdleSec) AS TotalIdleSec,
SUM(ProductionSec) AS TotalProductionSec,
SUM(UplineSec) AS TotalUplineSec,
SUM(DownlineSec) AS TotalDownlineSec,
SUM(UserSec) AS TotalUserSec,
DATEPART(year, DateTime) as Year,
DATEPART(month, DateTime) as Month
FROM Job
WHERE (DateTime >= dbo.FormatDateTime(@Param1, 'yyyy-mm-dd'))
AND
(DateTime < dbo.FormatDateTime(@Param2, 'yyyy-mm-dd'))
GROUP BY DATEPART(year, DateTime),
DATEPART(month, DateTime);
通过周:
SELECT SUM(IdleSec) AS TotalIdleSec,
SUM(ProductionSec) AS TotalProductionSec,
SUM(UplineSec) AS TotalUplineSec,
SUM(DownlineSec) AS TotalDownlineSec,
SUM(UserSec) AS TotalUserSec,
DATEPART(year, DateTime) as Year,
DATEPART(week, DateTime) as Week
FROM Job
WHERE (DateTime >= dbo.FormatDateTime(@Param1, 'yyyy-mm-dd'))
AND
(DateTime < dbo.FormatDateTime(@Param2, 'yyyy-mm-dd'))
GROUP BY DATEPART(year, DateTime),
DATEPART(week, DateTime);
到DAY:
SELECT SUM(IdleSec) AS TotalIdleSec,
SUM(ProductionSec) AS TotalProductionSec,
SUM(UplineSec) AS TotalUplineSec,
SUM(DownlineSec) AS TotalDownlineSec,
SUM(UserSec) AS TotalUserSec,
DATEPART(year, DateTime) as Year,
DATEPART(dayofyar, DateTime) as Day
FROM Job
WHERE (DateTime >= dbo.FormatDateTime(@Param1, 'yyyy-mm-dd'))
AND
(DateTime < dbo.FormatDateTime(@Param2, 'yyyy-mm-dd'))
GROUP BY DATEPART(year, DateTime),
DATEPART(dayofyear, DateTime);
对于DAY,还有其他选项,例如使用CAST提取日期部分或您似乎拥有的FormatDateTime函数。我使用DATEPART来保持一致性。
问题内容: 如何在MySQL中的日期范围之间选择数据。我的专栏是24小时的祖鲁时间格式。 尽管在这些时间段之间有数据,但不返回任何内容。我是否必须强制 “发件人” 和 “发件人” 字段中的值键入查询? 问题答案: 您需要更新日期格式:
问题内容: 我需要填充一个表,该表将存储2个给定日期之间的日期范围:09/01/11-10/10/11 因此,在这种情况下,该表将从2011年9月1日开始存储,直到每天存储到10/10/11,我想知道在SQL Server中是否有一种巧妙的方法-我目前正在使用SQL Server 2008 。 谢谢 问题答案: 在SQL 2005+上很容易;如果您有数字表或理货表,操作会更容易。我在下面伪造了它:
问题内容: 我有一个和。我想获取这两个日期之间的日期列表。谁能帮助我指出查询中的错误。 这是一个变量。 问题答案: 您应该将这两个日期放在单引号之间,例如。 或可以使用 请记住,第一个日期是包含日期,但第二个日期是排除日期,因为它实际上是“ 2011/02/27 00:00:00”
问题内容: 我想选择两个日期之间的记录- startDate和endDate(它们是sql中的日期/时间格式)。我有以下sql查询,但它不起作用,有人可以告诉我我在做什么错吗? 问题答案: 我建议将日期转换为日期时间并进行比较,并使日期保持标准和一致。就像是: 注意:我假设您的startDate和endDate与您提供的字符串具有相同的格式。
问题内容: 我的数据库中有以下一组匹配日期的日期(dd / MM / yyyy): 事件具有开始和结束日期(时间无关紧要),并且endDate为NULL表示事件仍在进行中。 我想确定的是两个任意日期之间的日期范围,其中a)没有事件,b)事件重叠。 因此,对于输入日期范围01/04/2009-30/06/2009,我希望得到以下结果: 注意,作为结果,两个相邻的重叠范围是可以接受的。 谁能用SQL算
如何向MaterialDatePicker添加约束以强制用户选择仅介于两个日期之间的日期?