Linq to sql,求和时间跨度?
我在 mssql 2008 数据库中有一个时间字段,我想做一些事情来达到以下效果:
Timespent = x.sum(x => x.AmountOfTime);
其中 AmountOfTime 是一个时间 MSSQL 字段。 Sum 似乎只适用于小数,我如何添加这些列?
I have a time field in a mssql 2008 database that I want to do something to the effect of:
Timespent = x.sum(x => x.AmountOfTime);
Where AmountOfTime is a time MSSQL field. Sum seems to only work on decimals, how can I add these columns?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可能希望将周期转换为间隔 - 如有必要,通过从结束时间减去开始时间。 请注意,TIME 类型表示瞬间,而不是持续时间。 在标准 SQL 中,您需要 INTERVAL HOUR TO SECOND。 我不确定 Microsoft 是否支持这一点 - 还有其他主要的 DBMS 不支持。 如果您受困于 TIME,您应该能够从值中减去 TIME '00:00:00' 并获得可行的值(这将是一个 INTERVAL)。
间隔的一个特殊优点是您确实可以通过 SUM 将它们相加。
有关详细信息,您可以像我一样在 MSDN(或通过 Google)手动 bash。
You probably want to convert the periods to intervals - if necessary, by subtracting the start time from the end time. Note that the TIME type represents an instant, not a duration. In standard SQL, you want INTERVAL HOUR TO SECOND. I'm not sure whether Microsoft supports that - there are other major DBMS that do not. If you are stuck with TIME, you should be able to subtract TIME '00:00:00' from the values and get something workable (that would be an INTERVAL).
One particular advantage of intervals is that you can indeed add them up via SUM.
For the details, you can manual bash at MSDN (or via Google) as well as I can.
如果 SQL 构造不支持此功能,则不能...为什么不创建一个具有时间数字表示形式的特殊字段,然后可以使用 SQL 将其添加在一起。
If SQL construct doesn't support this, you can't... Why don't you make a special field which has a numeric representation of the time, and then you can add it together using SQL.
我使用以下方法解决了这个问题,假设您的表上有开始和结束日期时间:
然后您可以使用它来获取总小时数:
I solved this using the following method, given that you have a start and finish datetime on your table:
Then you can use it to get the total number of hours: