如何使用sql查询获取intime和outtime

时间:2011-11-10 11:31:47

标签: sql-server-2005 sql-server-2008

我有一个包含字段名称,ID,日期,intime / outtime,datetime的表格。

在此,我需要找到第一个银行时间,最后一个时间以及每个员工的第一个时间和最后一个时间之间的持续时间。

如果雇员被刷进去,那么这是他的第一个银泰。如果他搬出去,那就是他的外出时间。因此,在一天结束时,必须计算他的最终停工时间,然后是第一个时间和最后一个停工时间。

当我采用最短的约会时间时,我获得了第一个时间。但是,如果我花费最多的时间,我会获得可以进/出的当前状态。

虽然,我需要得到最后的时间。

3 个答案:

答案 0 :(得分:1)

  select name,MAX(convert(char(8),datetimecolumn,108)as outtime,MIN(convert(char(8),datetimecolumn,108) as intime , 
  (MAX( convert(char(8),datetimecolumn,108 ) - MIN( convert(char(8),datetimecolumn,108 ) )AS duration from Table

OR

SELECT name,intime/outime 
 (SELECT MAX([convert(char(8),datetimecolumn,108]) AS outtime FROM ... WHERE ...)
- (SELECT MIN([convert(char(8),datetimecolumn,108]) AS inTime FROM ... WHERE ...)
 AS duration  from TABLE

答案 1 :(得分:1)

SELECT name, date , MIN(convert(char(8),datetimecolumn,108) AS intime , MAX(convert(char(8),datetimecolumn,108) AS outtime, (outtime -intime) as duration 
FROM myTable
GROUP BY name, date

答案 2 :(得分:0)

可能是这样的:

SELECT
  name,
  date,
  FirstInTime = MIN(CASE [intime/outtime] WHEN 1 THEN datetime END),
  LastOutTime = MAX(CASE [intime/outtime] WHEN 2 THEN datetime END)
FROM atable
GROUP BY
  name,
  date

如果第一个事件始终是及时的,那么FirstInTime列可以简单地定义为

  …
  FirstInTime = MIN(datetime),
  …