質問するログイン新規登録

回答編集履歴

4

timestamp型への文字列切り出しを追加

2021/04/09 01:24

投稿

退会済みユーザー
answer CHANGED
@@ -29,9 +29,9 @@
29
29
 
30
30
  ```sql
31
31
  select
32
- to_timestamp(t.active_time, 'YYYYMMDDHH24MI') as "タイムスタンプ",
32
+ to_timestamp(substring(t.active_time from 1 to 14), 'YYYYMMDDHH24MISS') as "タイムスタンプ",
33
- extract(dow from to_timestamp(t.active_time, 'YYYYMMDDHH24MI')) as "dow(0が日曜日)",
33
+ extract(dow from to_timestamp(substring(t.active_time from 1 to 14), 'YYYYMMDDHH24MISS')) as "dow(0が日曜日)",
34
- extract(hour from to_timestamp(t.active_time, 'YYYYMMDDHH24MI')) as "hour"
34
+ extract(hour from to_timestamp(substring(t.active_time from 1 to 14), 'YYYYMMDDHH24MISS')) as "hour"
35
35
  from (
36
36
  select '202104011200' as active_time
37
37
  ) as t

3

見直し

2021/04/09 01:24

投稿

退会済みユーザー
answer CHANGED
@@ -29,10 +29,13 @@
29
29
 
30
30
  ```sql
31
31
  select
32
- to_timestamp(t.active_time, 'YYYYMMDDHH24MI')
32
+ to_timestamp(t.active_time, 'YYYYMMDDHH24MI') as "タイムスタンプ",
33
+ extract(dow from to_timestamp(t.active_time, 'YYYYMMDDHH24MI')) as "dow(0が日曜日)",
34
+ extract(hour from to_timestamp(t.active_time, 'YYYYMMDDHH24MI')) as "hour"
33
35
  from (
34
36
  select '202104011200' as active_time
35
37
  ) as t
38
+
36
39
  ```
37
40
 
38
41
  これでtimestamp型にできるからここから加工すればいいんじゃないかと。

2

見直し

2021/04/08 09:14

投稿

退会済みユーザー
answer CHANGED
@@ -11,4 +11,28 @@
11
11
  って工夫をしたらいいと思った。
12
12
  そういうviewを予め組んでもいいだろうし、
13
13
  データ投入時点でpl/pgSQLを駆使して検索用に加工したものが
14
- 自動反映されるようにするなどの工夫もありかもしれない。
14
+ 自動反映されるようにするなどの工夫もありかもしれない。
15
+
16
+ ```sql
17
+ select
18
+ substring(t.active_time from 1 for 4) as yyyy,
19
+ substring(t.active_time from 5 for 2) as mm,
20
+ substring(t.active_time from 7 for 2) as dd,
21
+ substring(t.active_time from 9 for 2) as hh,
22
+ substring(t.active_time from 11 for 2) as nn
23
+ from (
24
+ select '202104011200' as active_time
25
+ ) as t
26
+ ```
27
+
28
+ これで年月日時分が分離できるし、
29
+
30
+ ```sql
31
+ select
32
+ to_timestamp(t.active_time, 'YYYYMMDDHH24MI')
33
+ from (
34
+ select '202104011200' as active_time
35
+ ) as t
36
+ ```
37
+
38
+ これでtimestamp型にできるからここから加工すればいいんじゃないかと。

1

見直し

2021/04/08 09:08

投稿

退会済みユーザー
answer CHANGED
@@ -1,9 +1,14 @@
1
+ 期間や曜日や時間での絞り込みクエリーがよくある操作なのだとしたら、
1
- いちいちvarcharとかtextとかから関数かまして加工した上での絞り込みって遅そう。
2
+ いちいちvarcharとかtextとかから関数かまして加工した上での絞り込みって
3
+ レコード件数次第ではメモリに上がりきらなくなって極端に遅くなる場合も考えられそう。
2
4
 
3
- 式に対するインデックスを組み合わせるくらいなら
5
+ 式に対するインデックスを組み合わせるのはもちろんだけど
4
6
 
5
7
  - 期間の絞り込み用にtimestamp型で持つ、
6
8
  - 曜日の絞り込み用に曜日カラムを持つ、
7
9
  - 時間の絞り込み用に時成分のみのintegerカラムを持つ、
8
10
 
9
- って工夫をしたらいいと思った。
11
+ って工夫をしたらいいと思った。
12
+ そういうviewを予め組んでもいいだろうし、
13
+ データ投入時点でpl/pgSQLを駆使して検索用に加工したものが
14
+ 自動反映されるようにするなどの工夫もありかもしれない。