* Karma Dorji
> i have a table, like the one below,
> i need to find the time difference between the Start and Stop from a
> particular CallingStationId to particular CalledStationId.
>
> +------------+----------+--------------------+-------------------+
> ----------
> --------+-------------------+
> | Date       | Time     | CallingStationId   | CalledStationId   |
> AcctStatusType   | AcctSessionTime   |
> +------------+----------+--------------------+-------------------+
> ----------
> --------+-------------------+
> | 09/01/2004 | 17:28:27 | 02327125           | 00018151635       | Start
> |                   |
> | 09/01/2004 | 19:00:34 | 02320176           | 01181471822125    | Start
> |                   |
> | 09/01/2004 | 19:10:08 | 17113080           | 01022586815       | Start
> |                   |
>  09/01/2004 | 20:28:27 | 02327125           | 00018151635       | Sop
> |                   |
> | 09/01/2004 | 21:00:34 | 02320176           | 01181471822125    | Stop
> |                   |
> | 09/01/2004 | 22:10:08 | 17113080           | 01022586815       | Stop
> |                   |

First you need to pair the rows:

SELECT t1.Time,t2.Time
  FROM tab t1,tab t2
  WHERE
    t1.CallingStationId = t2.CallingStationId AND
    t1.CalledStationId = t2.CalledStationId AND
    t1.AcctStatusType = 'Start' and
    t2.AcctStatusType = 'Stop'

This should work with your example data, if you have duplicate combinations
of CallingStationId/CalledStationId/AcctStatusType you will also need to
check the date and time.

To calculate the time difference you could transform the time string to
seconds, and then just subtract. This will give you the answer in seconds,
but it will only work if your dates are valid mysql dates, in the format
YYYY-MM-DD:

SELECT unix_timestamp(concat(t2.Date,' ',t2.Time)) -
       unix_timestamp(concat(t1.Date,' ',t1.Time))
  FROM tab t1,tab t2
  WHERE
    t1.CallingStationId = t2.CallingStationId AND
    t1.CalledStationId = t2.CalledStationId AND
    t1.AcctStatusType = 'Start' and
    t2.AcctStatusType = 'Stop'

If the date is irrelevant (allways same day) you can use any date:

SELECT unix_timestamp(concat('2004-09-01 ',t2.Time)) -
       unix_timestamp(concat('2004-09-01 ',t1.Time))

--
Roger


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to