![]() |
1
3
更新:
|
![]() |
2
2
在一个查询中有点棘手,但是这个查询应该可以工作: -------------- SELECT source, correct, hours_to_end, (source + INTERVAL hours_to_end HOUR) ending FROM ( SELECT source, correct , LEAST(hours, hours_to_off) + (((hours_left - MOD(hours_left, on_long)) / on_long) * 24 + off_long + MOD(hours_left, on_long)) * overlap hours_to_end FROM ( SELECT source, correct, hours, on_long, off_long, hours_to_off , GREATEST(0, hours - hours_to_off) hours_left , IF(hours - hours_to_off >= 0, 1, 0) overlap FROM ( SELECT source, correct, hours, off_long , (24 - off_long) on_long , HOUR(TIMEDIFF(DATE(source) + INTERVAL off_start HOUR, source)) hours_to_off FROM tt ) t ) t ) t -------------- +---------------------+---------------------+--------------+---------------------+ | source | correct | hours_to_end | ending | +---------------------+---------------------+--------------+---------------------+ | 2010-11-11 12:00:00 | 2010-11-11 13:00:00 | 1.0000 | 2010-11-11 13:00:00 | | 2010-11-11 19:00:00 | 2010-11-12 06:00:00 | 11.0000 | 2010-11-12 06:00:00 | | 2010-11-11 19:00:00 | 2010-11-12 07:00:00 | 12.0000 | 2010-11-12 07:00:00 | | 2010-11-11 19:00:00 | 2010-11-12 08:00:00 | 13.0000 | 2010-11-12 08:00:00 | | 2010-11-11 19:00:00 | 2010-11-13 15:00:00 | 44.0000 | 2010-11-13 15:00:00 | | 2010-11-11 19:00:00 | 2010-11-15 11:00:00 | 88.0000 | 2010-11-15 11:00:00 | | 2010-11-11 19:00:00 | 2010-11-17 07:00:00 | 132.0000 | 2010-11-17 07:00:00 | +---------------------+---------------------+--------------+---------------------+ 编辑 :以下是较短版本: SELECT source, correct , source + INTERVAL LEAST(hours, hours_to_off) + IF(hours-hours_to_off >= 0 ,(hours-hours_to_off-MOD(hours-hours_to_off, on_long))/on_long*24 + off_long + MOD(hours-hours_to_off, on_long) ,0) HOUR ending FROM ( SELECT source, correct, hours, off_long, (24-off_long) on_long , HOUR(TIMEDIFF(DATE(source)+INTERVAL off_start HOUR, source)) hours_to_off FROM tt ) t ; |
![]() |
3
1
这是我的:
|
![]() |
hello_programmers · Mysql从其他表输出一列 1 年前 |
![]() |
Community wiki · 这个MySQL语句出了什么问题? 1 年前 |
![]() |
Community wiki · 优化从同一表中提取的多列的查询 1 年前 |
![]() |
Popo · Sql查询:返回数据库中不可用的where条件 1 年前 |
|
Hamdan Nuramdani · 对账单中一周内不同表中的数据求和 2 年前 |
|
Kugelfisch · 用php为数据库加密数据 2 年前 |