将字符串转换为时间 sql 或雪花
Convert string to time sql or snowflake
如何使用 SQL 将 'PT5H19M' 转换为 time
格式?我用在 MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM')
这是由于 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
为了雪花
select to_time('PT5H19M', '"PT"HH24"H"MI"M"');
----------------------------------------+
TO_TIME('PT5H19M', '"PT"HH24"H"MI"M"') |
----------------------------------------+
05:19:00 |
----------------------------------------+
如何使用 SQL 将 'PT5H19M' 转换为 time
格式?我用在 MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM')
这是由于 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
为了雪花
select to_time('PT5H19M', '"PT"HH24"H"MI"M"');
----------------------------------------+
TO_TIME('PT5H19M', '"PT"HH24"H"MI"M"') |
----------------------------------------+
05:19:00 |
----------------------------------------+