如何从日期时间字段SQL Server中获取开始时间和结束时间

时间:2014-10-17 02:22:07

标签: sql-server sql-server-2008 datetime

我在sql Server 2008中有2个表。源表有2个字段:useriddate(datetime)。目标表有4个字段: - useridDaystartHourEndHour - 。我需要找到重复的天数提取到目标表中的两个字段(startHour end EndHour)而不重复这一天。

来源表:

UserID TheDate
------ -----------------------
0001   2014-07-23 08:18:02.000
0001   2014-07-23 16:04:02.000
0002   2014-07-23 08:00:00.000
0003   2014-07-23 09:00:00.000

目标表:

UserID TheDate    StartHour        EndHour
------ ---------- ---------------- ----------------
0001   2014-07-23 08:18:02         16:04:02
0002   2014-07-23 08:00:00         NULL
0003   2014-07-23 09:00:00         NULL

1 个答案:

答案 0 :(得分:0)

SELECT UserID
      ,DateOnly
      ,CONVERT(time, MIN(TheDate)) AS StartHour
      ,CASE WHEN MAX(TheDate) = MIN(TheDate) 
            THEN NULL
            ELSE CONVERT(time, MAX(TheDate))
       END AS EndHour
FROM #T
     CROSS APPLY (
         SELECT CONVERT(date, TheDate) AS DateOnly
     ) AS CA1
GROUP BY UserID
        ,DateOnly