将字符串转换为时间sql或雪花

时间:2019-01-23 03:20:49

标签: mysql sql snowflake-datawarehouse

如何使用SQL将'PT5H19M'转换为time格式?我在MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM')

中使用

2 个答案:

答案 0 :(得分:0)

这是由于启用了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

作为一种解决方法,如果您不能(或不想)设置SQL模式,则可以CONCAT为字符串提供有效日期,然后使用TIME来获取时间输出的一部分,例如

SELECT TIME(STR_TO_DATE(CONCAT('2001-01-01','PT5H19M'), '%Y-%m-%dPT%HH%iM'))

输出:

05:19:00

Demo on dbfiddle

答案 1 :(得分:0)

雪花

select to_time('PT5H19M', '"PT"HH24"H"MI"M"');
----------------------------------------+
 TO_TIME('PT5H19M', '"PT"HH24"H"MI"M"') |
----------------------------------------+
 05:19:00                               |
----------------------------------------+