开发者社区> 问答> 正文

Transact-SQL汇总经过时间

我的数据库中有一个表,用于记录特定任务的开始和结束时间。这是数据示例:

Start                       Stop
9/15/2008 5:59:46 PM        9/15/2008 6:26:28 PM
9/15/2008 6:30:45 PM        9/15/2008 6:40:49 PM
9/16/2008 8:30:45 PM        9/15/2008 9:20:29 PM
9/16/2008 12:30:45 PM       12/31/9999 12:00:00 AM

我想编写一个脚本,对这些时间范围内的经过时间进行总计,并且无论何时有12/31/9999日期,我都希望它使用当前日期和时间,因为它仍在进行中。

如何使用Transact-SQL做到这一点?

展开
收起
心有灵_夕 2019-12-27 18:48:19 531 0
1 条回答
写回答
取消 提交回答
  • SELECT  SUM( CASE  WHEN Stop = '31 dec 9999' 
                       THEN DateDiff(mi, Start, Stop)
                       ELSE DateDiff(mi, Start, GetDate())
                 END ) AS TotalMinutes 
    FROM    task
    
    

    但是,更好的解决方案是使 Stop field nullable, and make it null when the task is still running. That way, you could do this:

    SELECT  SUM( DateDiff( mi, Start, IsNull(Stop, GetDate() ) ) AS TotalMinutes 
    FROM    task
    
    2019-12-27 18:48:41
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
PolarDB NL2SQL: 帮助您写出准确、优化的SQL 立即下载
Spark SQL 2.0/2.1 Experiences 立即下载
GeoMesa on Spark SQL 立即下载