MySQL, Windows现在我的数据库中有一个数字字段存储了某一个时间点的时间值,用秒表示,比如:现在是17:11:40,数据库中存储这个时间就是: 17*3600+11*60+40;
现在我要把这个时间查询出来表示成HH:MM:SS的格式。
现在我的想法是: select floor(f_time/3600) + ":" + floor(f_time%3600/60)+":"+floor(f_time%60) As f_time From t_mytabel;请问这样是否可行,另外,用什么办法效率更高?谢谢

解决方案 »

  1.   

    其实你自己一试就知道了,MYSQL的语句和MS SQL略有不同,修改如下。
    mysql> set @t=61900;
    Query OK, 0 rows affected (0.00 sec)mysql> select floor(@t/3600) + ":" + floor(@t%3600/60)+":"+floor(@t%60) ;
    +-----------------------------------------------------------+
    | floor(@t/3600) + ":" + floor(@t%3600/60)+":"+floor(@t%60) |
    +-----------------------------------------------------------+
    |                                                        68 |
    +-----------------------------------------------------------+
    1 row in set, 2 warnings (0.00 sec)mysql>
    mysql> select concat(floor(@t/3600), ":" ,floor((@t%3600)/60),":",floor(@t%60));+-------------------------------------------------------------------+
    | concat(floor(@t/3600), ":" ,floor((@t%3600)/60),":",floor(@t%60)) |
    +-------------------------------------------------------------------+
    | 17:11:40                                                          |
    +-------------------------------------------------------------------+
    1 row in set (0.00 sec)mysql>
      

  2.   

    不过MYSQL中有一个函数SEC_TO_TIME可以直接实现这个功能。mysql> set @t=17*3600+11*60+40;
    Query OK, 0 rows affected (0.00 sec)mysql> select SEC_TO_TIME(@t);
    +-----------------+
    | SEC_TO_TIME(@t) |
    +-----------------+
    | 17:11:40        |
    +-----------------+
    1 row in set (0.00 sec)mysql>
      

  3.   

    SEC_TO_TIME() 利用内建函数的效率会高。