sql >> Database teknologi >  >> RDS >> Sqlserver

SQL Datediff - find datediff mellem rækker

Hvis du bruger SQL Server, er en måde at gøre:

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
 

En anden måde er at bruge en CTE og ROW_NUMBER(), som denne:

;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

  1. PHP-formular session_start():Kan ikke sende session cache limiter

  2. ønsker at tælle antallet af hverdage mellem 2 datoer

  3. Bekræft login med Bcrypt Password

  4. kommasepareret liste