如何将int数转换为时间 - SQL

时间:2016-05-03 22:25:33

标签: mysql sql

例如,我有一个时间格式:1000

如何转换为MySQL Time()10:00:00

它也可能更复杂,因为有些数字是3位数,例如: 900进入MySQL Time()09:00:00

如果需要更多解释,请告诉我。

3 个答案:

答案 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')

FIDDLE

答案 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