MySQL:数字(1.75)到友好时间(1小时45分钟)

时间:2010-12-21 19:29:41

标签: mysql

在我的MySQL数据库中,我有一个名为“HoursSpent”的浮点字段,其值为“0.25”,“1.75”,“2.5”等。有没有办法让我的SELECT语句格式化这些值像这样的友好格式?:

0.25 = 15分钟

1.75 = 1小时45分钟

2.5 = 2小时30分钟

“HoursSpent”字段应该只有0.25个增量的值,但是如果有人要像0.16一样放置一些东西,那么如果SELECT语句通过将它四舍五入到最接近的0.25来处理它会很好(所以这种情况0.16会变成0.25或15分钟。

1 个答案:

答案 0 :(得分:3)

SELECT CONCAT(CASE WHEN FLOOR(HoursSpent)>0 THEN CONCAT(FLOOR(HoursSpent),' Hours and ') ELSE '' END,60*(HoursSpent-FLOOR(HoursSpent)),' Minutes') As Formatted
FROM   table;

结果:

+--------------------+
| Formatted          |
+--------------------+
| 2 Hours 45 Minutes |
| 3 Hours 30 Minutes |
| 4 Hours 15 Minutes |
| 15 Minutes         |
+--------------------+

* EDITv2

使用单数和复数形式:

SELECT  CONCAT(
          CASE
            WHEN FLOOR(HoursSpent)>0 THEN
              CONCAT(FLOOR(HoursSpent),
                CASE
                  WHEN FLOOR(HoursSpent)=1 THEN
                    ' Hour and '
                  ELSE
                    ' Hours and '
                END
              )
            ELSE
              ''
          END,
          60*(HoursSpent-FLOOR(HoursSpent)),
          ' Minutes'
        ) As Formatted
FROM   table;

导致:

+------------------------+
| Formatted              |
+------------------------+
| 2 Hours and 45 Minutes |
| 3 Hours and 30 Minutes |
| 4 Hours and 15 Minutes |
| 15 Minutes             |
| 1 Hour and 30 Minutes  |
+------------------------+

抱歉延误。 ; - )