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

回答編集履歴

1

追記

2019/05/08 09:36

投稿

yambejp
yambejp

スコア117921

answer CHANGED
@@ -1,4 +1,34 @@
1
1
  こんな感じ
2
2
  ```SQL
3
- select substring(concat(str_to_date(date_info,'%Y%m%d'),' ',sec_to_time(time_to_sec(concat(time_info,'00')))),1,16)
3
+ select substring(concat(str_to_date(date_info,'%Y%m%d'),' ',sec_to_time(time_to_sec(concat(time_info,'00')))),1,16);
4
- ```
4
+ ```
5
+
6
+ # 応用
7
+
8
+ 上記を利用して仮想生成列で処理します
9
+ ```SQL
10
+ create table tbl(
11
+ id int primary key,
12
+ date_info char(8),
13
+ time_info char(4),
14
+ formated_dt char(16) as
15
+ (substring(concat(str_to_date(date_info,'%Y%m%d'),' ',sec_to_time(time_to_sec(concat(time_info,'00')))),1,16))
16
+ );
17
+ /* formated_dtが自動計算される仮想生成列 */
18
+
19
+ insert into tbl(id,date_info,time_info) values
20
+ (1,'20180106','0440'),
21
+ (2,'20180105','2840'),
22
+ (3,'20180104','5240');
23
+
24
+ /* 出力 */
25
+ select * from tbl;
26
+ ```
27
+
28
+ - 結果
29
+
30
+ |id|date_info|time_info|formated_dt|
31
+ |:--:|:--:|:--:|:--:|
32
+ |1|20180106|0440|2018-01-06 04:40|
33
+ |2|20180105|2840|2018-01-05 28:40|
34
+ |3|20180104|5240|2018-01-04 52:40|