0

这是我的表 emp 的两列,我试图在我的动态 Web 应用程序(servlet,jsp)中触发 2 个单独的查询,其中 Id 能够从表中获取我的数据;

+-------------------------+----------+
| date                    | serialNo |
+-------------------------+----------+
| 2012-11-21 15:14:08.323 |        6 |
| 2012-11-21 12:48:12.067 |        6 |
| 2012-11-21 09:00:16.559 |        8 |
| 2012-11-21 05:24:20.091 |        9 |
| 2012-11-21 01:11:24.413 |        6 |
| 2012-11-21 14:57:28.531 |       11 |
| 2012-11-21 17:04:31.86  |        9 |
| 2012-11-21 19:33:36.259 |       13 |
| 2012-11-21 20:21:40.524 |        9 |
| 2012-11-21 23:00:44.362 |        8 |
| 2012-11-21 00:24:53.613 |       11 |

我要实施

  • 划分时间而不考虑日期,例如

      Time Division   |  Count
    

    | 00:00:00 - 05:59:59 | 3
    | 06:00:00 - 11:59:59 | 1

    | 12:00:00 - 17:59:59 | 4

查询: select date count(*) as Count from info where (date between '%00:00:00%' and '%05:59:59%' or date between '%06:00:00%' and '%11:59:59%' or date between '%12:00:00%' and '%17:59:59%') group by date.:( :(

我发现我一点也不接近 :( 我的查询中的任何一个,所以我在这个论坛上提出这个问题。欢迎在此背景下提供任何类型的输入。

4

1 回答 1

-1

我建议您执行以下操作:

为间隔定义一个表,像这样

CREATE TABLE IF NOT EXISTS 步骤( namevarchar(10) NOT NULL,初始时间 NOT NULL,最后时间 NOT NULL)ENGINE=InnoDB DEFAULT CHARSET=latin1;

填写名称以及时间间隔的开始和结束:

插入steps( name, initial, final) 值 ('Int1', '00:00:00', '05:59:59'), ('int2', '06:00:00', '11:59:59') , ('int3', '12:00:00', '17:59:59'), ('int4', '18:00:00', '23:59:59');

(我在 17:59:59 之后创建了一个最终间隔 por 事件;如果您需要更多间隔,请根据需要更正!...)

为您的数据创建一个表(例如:

如果不存在则创建表timestime时间不为空, freqint(10) 不为空)引擎=InnoDB 默认字符集=latin1;

用您的时间数据填充它。

进行最终查询:select steps.name, count(*) from steps, times where (steps.initial and steps.final) group by steps.name

结果如下:

"int1","3" "int2","1" "int3","4" "int4","3"

希望会有所帮助!

于 2012-11-23T10:47:30.597 回答