如何在mysql中解析ISO时间戳的时间?

时间:2020-05-04 09:07:24

标签: mysql sql

如何将ISO日期时间String时间戳正确解析为time中的mysql类型列?我注意到以下内容:

select CAST('2013-09-05T10:10:02' as time) from mytable limit 1

结果不正确: 00:20:13

select CAST(CAST('2013-09-05T10:10:02' as datetime) as time) from mytable limit 1

结果正确: 10:10:02

为什么要在这里加倍CAST才能获得正确的时间?更重要的是:时间解析完成后的属性如何?

2 个答案:

答案 0 :(得分:1)

基本上,当您尝试将某物转换为看起来像整数的时间时,MySQL会将其视为HHMMSS形式的某物,因此您的2013-09-05T10:10:02变为00:20:13。为了正确转换,该值必须为MySQL datetime,您可以通过CAST进行操作,也可以使用STR_TO_DATE将日期字符串转换为MySQL日期,然后将{{3 }}提取其中的时间部分:

SELECT TIME(STR_TO_DATE('2013-09-05T10:10:02', '%Y-%m-%dT%H:%i:%s'))

输出:

10:10:02

TIME

答案 1 :(得分:1)

因为您有一个字符串,需要首先将其转换为日期格式。

如果您按如下所示及时投放:

   select CAST('2014-09-05T10:10:02' as time)
    00:20:14
    select CAST('2015-09-05T10:10:02' as time)
    00:20:15


  select CAST('2013' as time) --below casting string as time
    00:20:13

如果您密切监视其将其视为字符串并以年份作为时间的话。

因此,您需要先将其转换为日期时间,然后再转换为时间。

select CAST(CAST('2013-09-05T10:10:02' as datetime) as time)
相关问题