Преобразовать строку во время sql или снежинка - PullRequest
0 голосов
/ 23 января 2019

Как я могу преобразовать 'PT5H19M' в time формат, используя SQL?Я использовал в MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM')

Ответы [ 2 ]

0 голосов
/ 24 января 2019

для снежинки

select to_time('PT5H19M', '"PT"HH24"H"MI"M"');
----------------------------------------+
 TO_TIME('PT5H19M', '"PT"HH24"H"MI"M"') |
----------------------------------------+
 05:19:00                               |
----------------------------------------+
0 голосов
/ 23 января 2019

Это вызвано включением режима 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

...