将24小时格式化时间转换为十进制数

时间:2015-12-17 23:47:03

标签: mysql

我想显示17.5而不是17:30:00。怎么做到这一点?我搜索过但没有找到。

我想在我的查询中这样做:

SELECT o.*, u.* ,p.* ,
        SEC_TO_TIME(SUM(TIME_TO_SEC(DATE_FORMAT(STR_TO_DATE(dateto, '%m/%d/%y %H:%i:%s'), '%Y-%m-%d %H:%i:%s')) - TIME_TO_SEC(DATE_FORMAT(STR_TO_DATE(datefrom, '%m/%d/%y %H:%i:%s'), '%Y-%m-%d %H:%i:%s')))) AS totalHrs,

        number_format((select SEC_TO_TIME(SUM(TIME_TO_SEC(DATE_FORMAT(STR_TO_DATE(dateto, '%m/%d/%y %H:%i:%s'), '%Y-%m-%d %H:%i:%s')) - TIME_TO_SEC(DATE_FORMAT(STR_TO_DATE(datefrom, '%m/%d/%y %H:%i:%s'), '%Y-%m-%d %H:%i:%s')))) FROM overtime WHERE approve_by=0)) AS grandTotal

        FROM overtime AS o, users AS u, position AS p
        WHERE o.user_id=u.user_id and u.p_id=p.p_id and o.approve_by=0
        GROUP BY p.p_id
        ORDER BY p.position_name ASC

1 个答案:

答案 0 :(得分:6)

如果你有时间价值,那么这样的话:

select time_to_sec(timeval) / (60 * 60)

如果您希望它为1位小数,则转换为小数:

select cast(time_to_sec(timeval) / (60 * 60) as decimal(10, 1))

这与您的查询之间的关系并不明显,这似乎是一个不引人注意的问题。