如何将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
才能获得正确的时间?更重要的是:时间解析完成后的属性如何?
答案 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
答案 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)