MySql如何通过TRUNCATE将 "秒" 转换为天时分秒
1:JavaScript或者jquery处理时间
很多时候,我们在处理将秒格式化为天时分秒的时候都是通过JavaScript或者jquery在前端来进行实现,今天特意想了一下,如果可以直接在查询数据的时候直接处理好的话那岂不是很完美。下面给出一下jQuery处理的方法代码
//时间换算
function time(obj){
var d=0;
var m=0;
var s=0;
var str = "";
if(obj>0){
d=Math.floor(obj/1000/60/60/24);
h=Math.floor(obj/1000/60/60%24);
m=Math.floor(obj/1000/60%60);
s=Math.floor(obj/1000%60);
if(h>0){
h = h+"小时";
str = str + h;
}
if(m>0){
m = m+"分钟";
str = str + m;
}
if(s>0){
s = s+"秒";
str = str + s;
}
}else{
str = "0";
}
return str;
}
2:MySql使用语句处理时间
在处理时间的时候,需要使用到一个CONVERT() 函数,通过这个函数来指定输出的内容格式,下面是官方给的实际解析和例子
CONVERT() 函数是把日期转换为新数据类型的通用函数。
CONVERT() 函数可以用不同的格式显示日期/时间数据。
语法
CONVERT(data_type(length),expression,style)
值 | 描述 |
---|---|
data_type(length) | 规定目标数据类型(带有可选的长度)。 |
expression | 规定需要转换的值。 |
style | 规定日期/时间的输出格式。 |
下面的表格展示了 datetime 或 smalldatetime 转换为字符数据的 style 值:
值 (世纪 yy) | 值 (世纪 yyyy) | 输入/输出 | 标准 |
---|---|---|---|
- | 0 or 100 | mon dd yyyy hh:miAM (or PM) | Default |
1 | 101 | mm/dd/yy | USA |
2 | 102 | yy.mm.dd | ANSI |
3 | 103 | dd/mm/yy | British/French |
4 | 104 | dd.mm.yy | German |
5 | 105 | dd-mm-yy | Italian |
6 | 106 | dd mon yy | |
7 | 107 | Mon dd, yy | |
8 | 108 | hh:mm:ss | |
- | 9 or 109 | mon dd yyyy hh:mi:ss:mmmAM (or PM) | Default+millisec |
10 | 110 | mm-dd-yy | USA |
11 | 111 | yy/mm/dd | Japan |
12 | 112 | yymmdd | ISO |
- | 13 or 113 | dd mon yyyy hh:mi:ss:mmm (24h) | |
14 | 114 | hh:mi:ss:mmm (24h) | |
- | 20 or 120 | yyyy-mm-dd hh:mi:ss (24h) | |
- | 21 or 121 | yyyy-mm-dd hh:mi:ss.mmm (24h) | |
- | 126 | yyyy-mm-ddThh:mi:ss.mmm (no spaces) | ISO8601 |
- | 130 | dd mon yyyy hh:mi:ss:mmmAM | Hijiri |
- | 131 | dd/mm/yy hh:mi:ss:mmmAM | Hijiri |
实例
下面的脚本使用 CONVERT() 函数来显示不同的格式。我们将使用 GETDATE() 函数来获得当前的日期/时间:
CONVERT(VARCHAR(19),GETDATE())
CONVERT(VARCHAR(10),GETDATE(),10)
CONVERT(VARCHAR(10),GETDATE(),110)
CONVERT(VARCHAR(11),GETDATE(),6)
CONVERT(VARCHAR(11),GETDATE(),106)
CONVERT(VARCHAR(24),GETDATE(),113)
结果如下所示:
Nov 04 2011 11:45 PM
11-04-11
11-04-2011
04 Nov 11
04 Nov 2011
04 Nov 2011 11:45:34:243
来吧,看看我最后的sql语句吧
set @time = 7205; -- (SELECT SUM(call_duration) from orderRecord);
SELECT
CONCAT(convert(TRUNCATE(@time/(24*3600), 0), char), '天') LAST_DAY,
CONCAT(convert(TRUNCATE(@time%(24*3600)/3600, 0), char), '小时') LAST_HOUR,
CONCAT(convert(TRUNCATE((@time/60), 0), char), '分') LAST_MINUTE,
CONCAT(convert(TRUNCATE((@time)%60, 0), char), '秒') LAST_SECOND
效果图如下所示,其中的天时分秒 可以不用写,在组装显示的时候判断显示就好