Это вызвано включением режима SQL NO_ZERO_DATE
(который по умолчанию используется в MySQL 5.7 и выше).Если вы можете управлять режимом SQL, вы можете разрешить его, отключив NO_ZERO_DATE
например
SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'NO_ZERO_DATE', '')
SELECT STR_TO_DATE('PT5H19M', 'PT%HH%iM')
Вывод:
05:19:00
В качестве обходного пути, если вы не можете (или не можетеt) чтобы установить режим SQL, вы можете CONCAT
указать правильную дату для вашей строки, а затем использовать TIME
, чтобы получить временную часть вывода, например,
SELECT TIME(STR_TO_DATE(CONCAT('2001-01-01','PT5H19M'), '%Y-%m-%dPT%HH%iM'))
Вывод:
05:19:00
Демонстрация на dbfiddle