【问题标题】:Sum of datetime column in sql 05sql 05中日期时间列的总和
【发布时间】:2012-08-04 04:52:34
【问题描述】:

我的 sql 表中有一个名为“total_hours_worked”的列,它是“datetime”数据类型 我想找出“在 sql server 中工作的总小时数”的总数。

如何做到这一点? 我用谷歌搜索,但没有找到实用的解决方案。

【问题讨论】:

  • @praveen 不,我不能这样做,因为 sum 函数适用于整数值。如果我尝试按照您所说的去做,我会收到类似“操作数数据类型 datetime 对 sum 运算符无效”的错误。
  • @SimonWhitehead 不起作用,伙计.. sum 用于整数。我想计算时间
  • 你需要两个字段或两个值来找到它们之间的不同,然后你可以找到它们的总和......
  • 你能发布你想要的样本数据和结果吗

标签: sql-server database datetime datetime-format


【解决方案1】:

如果我正确理解了您的数据,就会出现这样的情况。

declare @T table
(
  total_hours_worked datetime
)

insert into @T values ('05:30:00')
insert into @T values ('10:00:00')
insert into @T values ('15:00:00')

select sum(datediff(minute, 0, total_hours_worked)) / 60.0 as hours_worked
from @T

结果:

hours_worked
---------------------------------------
30.500000

如果您只需要存储小时数,您应该考虑使用整数数据类型而不是 datetime。会更高效,更容易处理。

【讨论】:

    【解决方案2】:

    试试这个。这里我也考虑过秒。

    declare @T table
    (
      total_hours_worked datetime
    )
    
    insert into @T values ('05:30:00')
    insert into @T values ('10:00:00')
    insert into @T values ('15:00:00')
    insert into @T values ('05:25:45')
    
    select SUM((DATEPART(hh,total_hours_worked)*60)+DATEPART(mi,total_hours_worked)+(DATEPART(ss,total_hours_worked)/(60.0)))/60.0  as TotalHours from @T
    

    【讨论】:

    • 现在检查查询,我已经更新以使用 sql 2005。最初你没有提到 sql 版本,所以我在 sql 2008 中做了。
    猜你喜欢
    • 1970-01-01
    • 2010-09-18
    • 2019-04-24
    • 2011-11-19
    • 2021-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-03-20
    • 1970-01-01
    相关资源
    最近更新 更多