mysql中的时间划分和日期划分

时间:2012-11-23 09:15:25

标签: mysql jdbc

这是我的表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. :( :(

我发现我一点都不接近:(我的查询中的任何一个,所以我将此提升到这个论坛。欢迎在此背景下提供任何类型的投入。

1 个答案:

答案 0 :(得分:-1)

我建议你做以下事情:

定义一个表间隔,例如

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

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

INSERT INTO stepsnameinitialfinal)价值观 ('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之后创建了一个最终间隔事件;如果你需要更多间隔,请根据需要更正!...

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

CREATE TABLE IF NOT NOT EXISTS times(   time时间非空,   freq int(10)NOT NULL )ENGINE = InnoDB DEFAULT CHARSET = latin1;

填写您的时间数据。

做最后的查询: 选择steps.name,        计数(*) 从步骤,时间 where(steps.initial和steps.final之间的时间) group by steps.name

结果如下:

“INT1”, “3” “INT2”, “1” “INT3”, “4” “INT4”, “3”

希望会有所帮助!