sql-server - SQL Server select 语句用于指定日期范围?

标签 sql-server datetime select

我有一个包含数千个条目的数据库,其中有两个日期/时间字段,我们将它们称为“输入”和“输出”:

In                                      Out
2011-06-16 13:45:11.000    2011-06-16 13:49:12.000
2011-06-16 13:51:31.000    2011-06-16 14:23:17.000
2011-06-16 14:51:54.000    2011-06-16 14:58:43.000

等等...

在输入上我有一个时间范围(timeIn 和 timeOut)。在输出中,我需要知道属于该时间范围的每个记录中“输入”和“输出”时间之间的累积秒数。用这个图更容易说明:

http://i150.photobucket.com/albums/s99/dc2000_bucket/sql_graph.jpg

根据图中的名称,我需要知道“时间间隔 1(以秒为单位)”+“时间间隔 2(以秒为单位)”+“时间间隔 3(以秒为单位)”。如何编写这样的SQL语句?

最佳答案

select sum(datediff(second, [In], case when @TimeOut < [Out] 
                                    then @TimeOut 
                                    else [Out] 
                                  end))
from YourTable
where [In] between @TimeIn and @TimeOut

或者如果您想包含以 @TimeIn - @TimeOut 结尾的间隔,也可以这样。

select sum(datediff(second, case when @TimeIn < [In] 
                              then [In]
                              else @TimeIn
                            end, 
                            case when @TimeOut < [Out] 
                              then @TimeOut 
                              else [Out] 
                            end))
from YourTable
where [In] <= @TimeOut and 
      [Out] >= @TimeIn

关于sql-server - SQL Server select 语句用于指定日期范围?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6674859/

相关文章:

sql-server - 重载解析失败,因为在没有缩小转换的情况下无法调用可访问的 'new'

javascript - 如何使用 moment.js 和 moment timezone 确定商店是打开还是关闭?

r - 如何使用 R 选择/查找距离列表 (X/Y) 一定距离内的坐标

javascript - jQuery 类不会添加更改选择框的选项

sql-server - 在 T-SQL 中搜索 Varchar 和整数列

java - 以关键字作为名称截断表

python - 在 python 中以分钟为单位获取两个日期时间对象之间的差异

mysql - 通过 1 SELECT 从 SQL 中提取所有内容

sql-server - 使用 cte 按顺序更新不起作用,为什么?

python - 数据帧中的多个计数和中值