【发布时间】:2018-02-12 15:29:52
【问题描述】:
我正在使用 Oracle DB 版本 - Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production。
我正在尝试从某个时间范围内的审核表中获取数据 - 例如:
Select * from AUDIT_TABLE where time > '13/02/2018 19:00:00' and time < '14/02/2018 07:00:00'
这里,时间列数据类型是DATE。
但是,企业需要过去 1 年的数据。因此,我们需要运行最近 1 年的此类数据。
我们有两个想法: 1)我们可以编写一个proc并传递开始日期和结束并在db中查询365次,并且可以将结果写入文件/temp db中
2) 查询全年数据并在excel中放入过滤器。
但是,这两种想法似乎都需要花费很多精力并且不是很好的解决方案。有什么方法可以快速做到这一点。
说,我们的数据集是这样的:
ID TIMESTAMP USER_ID
1 09/07/2012 09:52:05 XXXXXXX
2 09/07/2012 09:57:06 YYYYY
3 09/10/2012 10:49:10 ZZZZZZ
4 09/25/2012 05:58:37 ABCCC
5 09/25/2012 06:00:30 XXXXXXX
6 09/25/2012 06:07:03 YYYYY
7 09/25/2012 13:38:18 ZZZZZZ
8 09/26/2012 12:12:59 ABCCC
9 09/27/2012 11:01:29 XXXXXXX
10 09/28/2012 05:59:47 YYYYY
11 09/28/2012 06:06:58 ZZZZZZ
12 09/28/2012 06:07:28 ABCCC
13 10/03/2012 14:04:48 XXXXXXX
14 10/06/2012 12:44:08 YYYYY
15 10/09/2012 05:59:47 ZZZZZZ
16 10/09/2012 06:03:35 ABCCC
17 10/09/2012 06:04:04 XXXXXXX
18 10/09/2012 06:15:28 YYYYY
19 10/10/2012 06:54:21 ZZZZZZ
20 10/11/2012 07:54:18 ABCCC
21 10/11/2012 08:16:41 XXXXXXX
22 10/11/2012 08:23:08 YYYYY
23 10/11/2012 09:44:42 ZZZZZZ
24 10/11/2012 11:46:30 ABCCC
25 10/12/2012 06:32:33 XXXXXXX
我们只想要 19:00 到 07:00 的结果集,这将是单个结果集中一年的数据并返回类似:
ID TIMESTAMP USER_ID
4 09/25/2012 05:58:37 ABCCC
5 09/25/2012 06:00:30 XXXXXXX
6 09/25/2012 06:07:03 YYYYY
10 09/28/2012 05:59:47 YYYYY
11 09/28/2012 06:06:58 ZZZZZZ
12 09/28/2012 06:07:28 ABCCC
15 10/09/2012 05:59:47 ZZZZZZ
16 10/09/2012 06:03:35 ABCCC
17 10/09/2012 06:04:04 XXXXXXX
18 10/09/2012 06:15:28 YYYYY
19 10/10/2012 06:54:21 ZZZZZZ
25 10/12/2012 06:32:33 XXXXXXX
提前致谢。
【问题讨论】:
-
您希望去年的每一天都使用相同的时间范围,直到当前日期 - 全部在一个结果集中?但只有那 12 小时的窗口吗? (那么恰好 19:00 或 07:00 的记录呢 - 其中一个应该是 >= 或
-
是的,应该是>=和
-
请显示示例数据和预期输出。
标签: oracle date select oracle11g range