回答編集履歴

2

追記

2021/03/22 03:38

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -51,3 +51,33 @@
51
51
  ) ::date
52
52
 
53
53
  ```
54
+
55
+ または
56
+
57
+ ```SQL
58
+
59
+ select
60
+
61
+ (
62
+
63
+ translate(
64
+
65
+ substring(
66
+
67
+ translate('あああ、2021年3月21日、いいい'
68
+
69
+ ,'0123456789'
70
+
71
+ ,'0123456789')
72
+
73
+ from '[0-9]+[年][0-9]+[月][0-9]+[日]')
74
+
75
+ , '年月日', '//'
76
+
77
+ ) ::date
78
+
79
+ + interval '3 months'
80
+
81
+ ) ::date
82
+
83
+ ```

1

追記

2021/03/22 03:38

投稿

sazi
sazi

スコア25327

test CHANGED
@@ -19,3 +19,35 @@
19
19
  ) ::date
20
20
 
21
21
  ```
22
+
23
+ 追記
24
+
25
+ --
26
+
27
+ 備考欄に日付以外の文字も含まれるなら、substring()で正規表現で日付に該当する部分を取り出してからキャストします。
28
+
29
+ ※但し、備考欄に複数の日付があるとか、対象の書式のものが既にある場合などは対象外です。
30
+
31
+ ```SQL
32
+
33
+ select
34
+
35
+ (
36
+
37
+ substring(
38
+
39
+ translate('あああ、2021年3月21日、いいい'
40
+
41
+ ,'0123456789年月日'
42
+
43
+ ,'0123456789///'
44
+
45
+ ) from '[0-9]+[/][0-9]+[/][0-9]+[/]'
46
+
47
+ ) ::date
48
+
49
+ + interval '3 months'
50
+
51
+ ) ::date
52
+
53
+ ```