[SQL] SQL DATEDIFF - 행 사이 DATEDIFF를 찾을 수
SQLSQL DATEDIFF - 행 사이 DATEDIFF를 찾을 수
나는 그래서 ID 1,2,3와 사이의 시간 차이를 보여 SQL을 사용하여 데이터베이스를 조회하고 싶습니다. 기본적으로 모든 기록을 위해 아래 행을 비교합니다. 어떤 도움을 주시면 감사하겠습니다.
IDCODE DATE TIME DIFFERENCE (MINS)
1 02/03/2011 08:00 0
2 02/03/2011 08:10 10
3 02/03/2011 08:23 13
4 02/03/2011 08:25 2
5 02/03/2011 09:25 60
6 02/03/2011 10:20 55
7 02/03/2011 10:34 14
감사!
해결법
-
==============================
1.SQL 서버를 사용하는 경우, 하나의 방법은하는 것입니다 :
SQL 서버를 사용하는 경우, 하나의 방법은하는 것입니다 :
DECLARE @Data TABLE (IDCode INTEGER PRIMARY KEY, DateVal DATETIME) INSERT @Data VALUES (1, '2011-03-02 08:00') INSERT @Data VALUES (2, '2011-03-02 08:10') INSERT @Data VALUES (3, '2011-03-02 08:23') INSERT @Data VALUES (4, '2011-03-02 08:25') INSERT @Data VALUES (5, '2011-03-02 09:25') INSERT @Data VALUES (6, '2011-03-02 10:20') INSERT @Data VALUES (7, '2011-03-02 10:34') SELECT t1.IDCode, t1.DateVal, ISNULL(DATEDIFF(mi, x.DateVal, t1.DateVal), 0) AS Mins FROM @Data t1 OUTER APPLY ( SELECT TOP 1 DateVal FROM @Data t2 WHERE t2.IDCode < t1.IDCode ORDER BY t2.IDCode DESC) x
또 다른 방법은이처럼 CTE와 ROW_NUMBER ()를 사용하고 있습니다 :
;WITH CTE AS (SELECT ROW_NUMBER() OVER (ORDER BY IDCode) AS RowNo, IDCode, DateVal FROM @Data) SELECT t1.IDCode, t1.DateVal, ISNULL(DATEDIFF(mi, t2.DateVal, t1.DateVal), 0) AS Mins FROM CTE t1 LEFT JOIN CTE t2 ON t1.RowNo = t2.RowNo + 1 ORDER BY t1.IDCode
-
==============================
2.표준 ANSI SQL 솔루션입니다. PostgreSQL을, 오라클, DB2 및 테라 데이타에서 작동합니다 :
표준 ANSI SQL 솔루션입니다. PostgreSQL을, 오라클, DB2 및 테라 데이타에서 작동합니다 :
SELECT idcode, date_time, date_time - lag(date_time) over (order by date_time) as difference FROM your_table
from https://stackoverflow.com/questions/5728602/sql-datediff-find-datediff-between-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] C #에서 SQL 서버에서 VARBINARY 데이터를 스트리밍 (0) | 2020.06.29 |
---|---|
[SQL] 그룹화 순서 열 값의 변화에 의해 데이터 그룹 (0) | 2020.06.29 |
[SQL] ( "LIKE"및 "="비교) REGEXP 성능 (0) | 2020.06.29 |
[SQL] PHP : 단일 쿼리에서 업데이트 여러 MySQL의 필드 (0) | 2020.06.29 |
[SQL] 어떻게 재귀 아이들의 모든 ID를 찾는 방법은? (0) | 2020.06.29 |