在PostgreSQL中基于时间和日期创建时态数据库子集



我有一个时间数据库,我想创建一个基于特定时间和日期的子集。例如,我想要一个从2007-09-29 00:05到2007-09-29 01:30的子集。

示例表s_2:

       temp    DateeTIMEE
1     -1.64 2007-09-29 00:01:09
2     -1.76 2007-09-29 00:03:09
3     -1.83 2007-09-29 00:05:09
4     -1.86 2007-09-29 00:07:09
5     -1.94 2007-09-29 00:09:09
6     -1.87 2007-09-29 00:11:09
7     -1.87 2007-09-29 00:13:09
8     -1.80 2007-09-29 00:15:09
9     -1.64 2007-09-29 00:17:09
10    -1.60 2007-09-29 00:19:09
11    -1.90 2007-09-29 00:21:09
12    -2.08 2007-09-29 00:23:09
13    -1.94 2007-09-29 00:25:09
14    -2.12 2007-09-29 00:27:09
15    -1.87 2007-09-29 00:29:09
16    -2.18 2007-09-29 00:31:09
17    -1.98 2007-09-29 00:33:09
18    -1.73 2007-09-29 00:35:09
19    -1.84 2007-09-29 00:37:09
20    -2.04 2007-09-29 00:39:09
21    -1.86 2007-09-29 00:41:09
22    -1.94 2007-09-29 00:43:09
23    -1.77 2007-09-29 00:45:09
24    -1.78 2007-09-29 00:47:09
25    -1.50 2007-09-29 00:49:09
26    -1.46 2007-09-29 00:51:09
27    -1.72 2007-09-29 00:53:09
28    -1.67 2007-09-29 00:55:09
29    -1.56 2007-09-29 00:57:09
30    -1.69 2007-09-29 00:59:09
31    -1.97 2007-09-29 01:01:09
32    -1.79 2007-09-29 01:03:09
33    -1.79 2007-09-29 01:05:09
34    -1.84 2007-09-29 01:07:09
35    -1.91 2007-09-29 01:09:09
36    -1.87 2007-09-29 01:11:09
37    -1.98 2007-09-29 01:13:09
38    -1.83 2007-09-29 01:15:09
39    -1.88 2007-09-29 01:17:09
40    -1.88 2007-09-29 01:19:09
41    -1.78 2007-09-29 01:21:09
42    -1.78 2007-09-29 01:23:09
43    -1.66 2007-09-29 01:25:09
44    -1.70 2007-09-29 01:27:09
45    -1.46 2007-09-29 01:29:09
46    -1.36 2007-09-29 01:31:09
47    -1.40 2007-09-29 01:33:09
48    -1.34 2007-09-29 01:35:09
49    -1.34 2007-09-29 01:37:09
50    -1.30 2007-09-29 01:39:09
51    -1.36 2007-09-29 01:41:09
52    -1.40 2007-09-29 01:43:09
53    -1.43 2007-09-29 01:45:09
54    -1.38 2007-09-29 01:47:09
55    -1.40 2007-09-29 01:49:09
56    -1.42 2007-09-29 01:51:09
57    -1.47 2007-09-29 01:53:09
58    -1.66 2007-09-29 01:55:09
59    -1.84 2007-09-29 01:57:09
60    -1.92 2007-09-29 01:59:09
61    -1.88 2007-09-29 02:01:09
62    -2.11 2007-09-29 02:03:09
63    -1.91 2007-09-29 02:05:09
64    -2.04 2007-09-29 02:07:09
65    -1.94 2007-09-29 02:09:09
66    -1.92 2007-09-29 02:11:09
67    -1.80 2007-09-29 02:13:09
68    -1.74 2007-09-29 02:15:09
69    -1.74 2007-09-29 02:17:09
70    -1.76 2007-09-29 02:19:09
71    -1.74 2007-09-29 02:21:09
72    -1.80 2007-09-29 02:23:09
73    -1.80 2007-09-29 02:25:09
74    -1.80 2007-09-29 02:27:09
75    -1.82 2007-09-29 02:29:09
76    -1.90 2007-09-29 02:31:09
77    -1.93 2007-09-29 02:33:09
78    -2.06 2007-09-29 02:35:09
79    -2.08 2007-09-29 02:37:09
80    -1.95 2007-09-29 02:39:09
81    -1.98 2007-09-29 02:41:09
82    -2.32 2007-09-29 02:43:09
83    -1.86 2007-09-29 02:45:09
84    -1.97 2007-09-29 02:47:09
85    -1.64 2007-09-29 02:49:09
86    -2.00 2007-09-29 02:51:09
87    -1.48 2007-09-29 02:53:09
88    -1.74 2007-09-29 02:55:09
89    -1.85 2007-09-29 02:57:09
90    -1.82 2007-09-29 02:59:09
91    -1.82 2007-09-29 03:01:09
92    -1.92 2007-09-29 03:03:09
93    -1.80 2007-09-29 03:05:09
94    -1.54 2007-09-29 03:07:09
95    -1.36 2007-09-29 03:09:09
96    -1.50 2007-09-29 03:11:09
97    -1.59 2007-09-29 03:13:09
98    -1.60 2007-09-29 03:15:09
99    -1.58 2007-09-29 03:17:09
100   -1.81 2007-09-29 03:19:09
101   -2.16 2007-09-29 03:21:09
102   -1.97 2007-09-29 03:23:09
103   -1.94 2007-09-29 03:25:09
104   -2.29 2007-09-29 03:27:09
105   -2.46 2007-09-29 03:29:09
106   -2.42 2007-09-29 03:31:09
107   -2.34 2007-09-29 03:33:09
108   -2.38 2007-09-29 03:35:09
109   -2.44 2007-09-29 03:37:09
110   -2.28 2007-09-29 03:39:09
111   -2.24 2007-09-29 03:41:09
112   -2.26 2007-09-29 03:43:09

预期结果,新子集:

  3     -1.83 2007-09-29 00:05:09
    4     -1.86 2007-09-29 00:07:09
    5     -1.94 2007-09-29 00:09:09
    6     -1.87 2007-09-29 00:11:09
    7     -1.87 2007-09-29 00:13:09
    8     -1.80 2007-09-29 00:15:09
    9     -1.64 2007-09-29 00:17:09
    10    -1.60 2007-09-29 00:19:09
    11    -1.90 2007-09-29 00:21:09
    12    -2.08 2007-09-29 00:23:09
    13    -1.94 2007-09-29 00:25:09
    14    -2.12 2007-09-29 00:27:09
    15    -1.87 2007-09-29 00:29:09
    16    -2.18 2007-09-29 00:31:09
    17    -1.98 2007-09-29 00:33:09
    18    -1.73 2007-09-29 00:35:09
    19    -1.84 2007-09-29 00:37:09
    20    -2.04 2007-09-29 00:39:09
    21    -1.86 2007-09-29 00:41:09
    22    -1.94 2007-09-29 00:43:09
    23    -1.77 2007-09-29 00:45:09
    24    -1.78 2007-09-29 00:47:09
    25    -1.50 2007-09-29 00:49:09
    26    -1.46 2007-09-29 00:51:09
    27    -1.72 2007-09-29 00:53:09
    28    -1.67 2007-09-29 00:55:09
    29    -1.56 2007-09-29 00:57:09
    30    -1.69 2007-09-29 00:59:09
    31    -1.97 2007-09-29 01:01:09
    32    -1.79 2007-09-29 01:03:09
    33    -1.79 2007-09-29 01:05:09
    34    -1.84 2007-09-29 01:07:09
    35    -1.91 2007-09-29 01:09:09
    36    -1.87 2007-09-29 01:11:09
    37    -1.98 2007-09-29 01:13:09
    38    -1.83 2007-09-29 01:15:09
    39    -1.88 2007-09-29 01:17:09
    40    -1.88 2007-09-29 01:19:09
    41    -1.78 2007-09-29 01:21:09
    42    -1.78 2007-09-29 01:23:09
    43    -1.66 2007-09-29 01:25:09
    44    -1.70 2007-09-29 01:27:09
    45    -1.46 2007-09-29 01:29:09

这是非常基本的SQL;我强烈建议你看一下PostgreSQL手册,特别是日期/时间函数和操作符部分和PostgreSQL教程。

你想要的基本用法是:

SELECT * FROM my_table
WHERE "DateeTIMEE" BETWEEN '2007-09-29 00:05:09' AND '2007-09-29 01:29:09';

或者直接使用:

SELECT * FROM my_table
WHERE "DateeTIMEE" >= '2007-09-29 00:05:09' AND "DateTIMEE" <= '2007-09-29 01:29:09';

注意我用双引号括了"DateTIMEE"。这是因为PostgreSQL将标识符降级,除非它们被引用,而且你似乎已经用混合大小写定义了它。如果Pg抱怨该列不存在,也许您在定义它时没有使用双引号,因此它被降级了。如果您有问题,请尝试不使用双引号。

最新更新