数据库中有一个表TEST,有三个字段START_TIME, END_TIME, DURATION
如果统计持续中,END_TIME, DURATION字段的值都是默认值0
想要的结果是开始时间为标准许时间,结束时间如果未结束显示“持续中”,已结束就显示结束时间,持续时间显示成“xx天xx小时xx分钟xx秒”的形式,已结束就用END_TIME-START_TIME计算,持续中就用当前时间-START_TIME计算,最大单位为0的不显示例子:
START_TIME END_TIME DURATION
1214007692 1214132727 125035
1214094831 1214132727 37896
1214131150 1214132727 1577
1214132551 1214132727 176
1214007692 0 0
1214094831 0 0
1214131150 0 0
1214132551 0 0假设当前时间为“2008-06-22 19:05:27”,取出的结果为:
开始时间 结束时间 持续时间
2008-06-21 08:21:32 2008-06-22 19:05:27 1天10小时43分钟55秒
2008-06-22 08:33:51 2008-06-22 19:05:27 10小时31分钟36秒
2008-06-22 18:39:10 2008-06-22 19:05:27 26分钟17秒
2008-06-22 19:02:31 2008-06-22 19:05:27 2分钟56秒
2008-06-21 08:21:32 持续中 1天10小时43分钟55秒
2008-06-22 08:33:51 持续中 10小时31分钟36秒
2008-06-22 18:39:10 持续中 26分钟17秒
2008-06-22 19:02:31 持续中 2分钟56秒对SQL不熟,请大家帮忙实现,谢谢
如果统计持续中,END_TIME, DURATION字段的值都是默认值0
想要的结果是开始时间为标准许时间,结束时间如果未结束显示“持续中”,已结束就显示结束时间,持续时间显示成“xx天xx小时xx分钟xx秒”的形式,已结束就用END_TIME-START_TIME计算,持续中就用当前时间-START_TIME计算,最大单位为0的不显示例子:
START_TIME END_TIME DURATION
1214007692 1214132727 125035
1214094831 1214132727 37896
1214131150 1214132727 1577
1214132551 1214132727 176
1214007692 0 0
1214094831 0 0
1214131150 0 0
1214132551 0 0假设当前时间为“2008-06-22 19:05:27”,取出的结果为:
开始时间 结束时间 持续时间
2008-06-21 08:21:32 2008-06-22 19:05:27 1天10小时43分钟55秒
2008-06-22 08:33:51 2008-06-22 19:05:27 10小时31分钟36秒
2008-06-22 18:39:10 2008-06-22 19:05:27 26分钟17秒
2008-06-22 19:02:31 2008-06-22 19:05:27 2分钟56秒
2008-06-21 08:21:32 持续中 1天10小时43分钟55秒
2008-06-22 08:33:51 持续中 10小时31分钟36秒
2008-06-22 18:39:10 持续中 26分钟17秒
2008-06-22 19:02:31 持续中 2分钟56秒对SQL不熟,请大家帮忙实现,谢谢
from test.
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
SQL 1992
MySQL 5.1 Reference Manual
数据库系统概论PPT.
[align=center]==== 思想重于技巧 ====
[/align]
.
贴子分数<20:对自已的问题不予重视。
贴子大量未结:对别人的回答不予尊重。
.
DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32')
10小时
DATE_FORMAT('2008-06-22 19:05:27', '%H')-DATE_FORMAT('2008-06-21 08:21:32', '%H')
43分钟
DATE_FORMAT('2008-06-22 19:05:27', '%i')-DATE_FORMAT('2008-06-21 08:21:32', '%i')
55秒
DATE_FORMAT('2008-06-22 19:05:27', '%S')-DATE_FORMAT('2008-06-21 08:21:32', '%S')
判断各部份是否为0,如为0,去掉,再CONCAT,加止单位
1天
DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32') 天数
TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'):小时、分、秒select concat(day,sj1,fz,sec) from (
select
concat(if(DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32')>0,
DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),''),'天') as day
,
TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32') as sj,
concat(substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',1),'时') as sj1,
concat(substring_index(
substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',2),':',-1),'分') as fz,
concat(substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',-1),'秒') as sec
) a自行优化
if(DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32')>0,
concat(DATEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),'天'),'') as day
,
TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32') as sj,
concat(substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',1),'时') as sj1,
concat(substring_index(
substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',2),':',-1),'分') as fz,
concat(substring_index(TIMEDIFF('2008-06-22 19:05:27','2008-06-21 08:21:32'),':',-1),'秒') as sec
) a 其它的时、分、秒参照DAY自行修改