简体   繁体   English

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

[英]Convert string to time sql or snowflake

How can I convert 'PT5H19M' to time format using SQL? 如何使用SQL将'PT5H19M'转换为time格式? I used in MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM') 我在MySQL STR_TO_DATE('PT5H19M', 'PT%HH%iM')

This is caused by the SQL Mode NO_ZERO_DATE being enabled (which it is by default in MySQL 5.7 and above). 这是由于启用了SQL模式NO_ZERO_DATE (在MySQL 5.7及更高版本中默认情况下)引起的。 If you can control the SQL Mode, you can resolve it by unsetting NO_ZERO_DATE eg 如果可以控制SQL模式,则可以通过NO_ZERO_DATE来解决它,例如

SET @@SQL_MODE = REPLACE(@@SQL_MODE, 'NO_ZERO_DATE', '')
SELECT STR_TO_DATE('PT5H19M', 'PT%HH%iM')

Output: 输出:

05:19:00

As a workaround if you can't (or don't want to) set the SQL Mode, you could CONCAT a valid date to your string, and then use TIME to get the time part of the output eg 因为如果你不能(或不愿)一种解决方法设置SQL模式,你可以CONCAT有效日期到您的字符串,然后用TIME来得到的输出如部分时间

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

Output: 输出:

05:19:00

Demo on dbfiddle dbfiddle上的演示

For Snowflake 对于雪花

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM