例如,我有一个时间格式:1000
如何转换为MySQL Time()10:00:00
它也可能更复杂,因为有些数字是3位数,例如: 900进入MySQL Time()09:00:00
如果需要更多解释,请告诉我。
答案 0 :(得分:2)
您只想使用str_to_date()
把你的一个字符串转换成一个字符串,用lpad填充它以保持前导0:)
SELECT STR_TO_DATE(LPAD(CAST(my_col AS CHAR(25)), 4, '0'), '%H') -- or %k
或者你可以放弃演员,因为mysql会为你做转换
SELECT STR_TO_DATE(LPAD(my_col, 4, '0'), '%k')
答案 1 :(得分:0)
Select cast(number*100 as time)
说明:正如time data type上的mysql文档所说:
MySQL使用假设最右边的两个数字代表秒数(即经过时间而不是时间)来解释没有冒号的缩写值。例如,您可能会将'1112'和1112视为'11:12:00'(11点后12分钟),但MySQL将其解释为'00:11:12'(11分12秒) 。同样,'12'和12被解释为'00:00:12'。
因此,如果您想将1000解释为10小时0分钟,则需要将您的数字乘以100并将其解释为时间表达式。
答案 2 :(得分:0)
使用CONVERT() - (http://dev.mysql.com/doc/refman/5.7/en/charset-convert.html)
你必须用零填充它以显示CONVERT()它是几小时而不是几分钟。
特定于您的示例:
> SELECT CONVERT(CONCAT('1000','00'), TIME) AS time1;
time1
10:00:00
或
> SELECT CONVERT(CONCAT(`fieldname`,'00'), TIME) AS time1 FROM `tablename`;
time1
10:00:00