Bạn cần STR_TO_DATE()
để chuyển đổi chuỗi thành ngày tháng. Cân nhắc:
select str_to_date(
'Wed, 18 Oct 2017 10:11:03 GMT',
'%a, %d %b %Y %T GMT'
)
Lợi nhuận:
2017-10-18 10:11:03
Khi các chuỗi của bạn được chuyển đổi thành ngày tháng, bạn có thể sử dụng timestampdiff()
để tính toán sự khác biệt giữa chúng và chuyển kết quả trở lại thời gian bằng cách sử dụng sec_to_time()
:
select
person,
taskID,
sec_to_time(
timestampdiff(
second,
str_to_date(Start_time, '%a, %d %b %Y %T GMT'),
str_to_date(End_time, '%a, %d %b %Y %T GMT')
)
) time_on_task
from mytable
Bản trình diễn trên DB Fiddlde :
| person | taskID | time_on_task |
| ------ | ------ | ------------ |
| Alpha | 1 | 00:00:33 |
| Alpha | 2 | 00:00:12 |
| Beta | 1 | 00:00:46 |
| Alpha | 3 | 00:01:10 |
| Gamma | 1 | 03:03:42 |
| Beta | 2 | 00:00:23 |