質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

解決済

2回答

1701閲覧

SQL結合で25時を越えるデータの変換と結合について

enigumalu

総合スコア192

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

1クリップ

投稿2019/05/08 07:43

編集2019/05/08 07:59

date_infoとtime_infoという2つのカラムをsql内で結合してdatatime型と同じ表示形式yyyy-mm-dd hh:ii(:ssは保存していません)にしたのですがそう行ったことはできますでしょうか?
データの内容
date_info = 20180105
time_info = 2840
結合したい結果の情報
2018-01-05 28:40

当初str_to_dateを利用することを考えていたのですが、時間の方が25時を越えるデータをそのまま持っているため
data系の変換をしない方法で結合変換出来る方法を思案しています。
str_to_date(concat(d.date_info,d.time_info), '%Y%m%d%H%i%s') 日時,
利用している方DBはmysqlです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/05/08 07:58

DBの種類はなにでしょうか。単に「SQL」といっても文法や方言があるため一概にこれと言えませんし、ものによっては的確な対応が可能となるかもしれないので、想定されるDBの種類をタグに追加してください。
guest

回答2

0

SUBSTRINGでべたに編集する。

SQL

1concat(SUBSTRING(date_info,1,4),'/',SUBSTRING(date_info,5,2),'/',SUBSTRING(date_info,7,2), ' ' , SUBSTRING(time_info, 1,2), ':', SUBSTRING(time_info, 3,2))

投稿2019/05/08 08:05

sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

こんな感じ

SQL

1select substring(concat(str_to_date(date_info,'%Y%m%d'),' ',sec_to_time(time_to_sec(concat(time_info,'00')))),1,16);

応用

上記を利用して仮想生成列で処理します

SQL

1create table tbl( 2id int primary key, 3date_info char(8), 4time_info char(4), 5formated_dt char(16) as 6(substring(concat(str_to_date(date_info,'%Y%m%d'),' ',sec_to_time(time_to_sec(concat(time_info,'00')))),1,16)) 7); 8/* formated_dtが自動計算される仮想生成列 */ 9 10insert into tbl(id,date_info,time_info) values 11(1,'20180106','0440'), 12(2,'20180105','2840'), 13(3,'20180104','5240'); 14 15/* 出力 */ 16select * from tbl;
  • 結果
iddate_infotime_infoformated_dt
12018010604402018-01-06 04:40
22018010528402018-01-05 28:40
32018010452402018-01-04 52:40

投稿2019/05/08 08:34

編集2019/05/08 09:36
yambejp

総合スコア114839

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yambejp

2019/05/08 09:29 編集

課題: time_info = 2840が10時間未満だった場合 ・time_info = 0440なのか ・time_info = 440なのか でだいぶ違います また逆に100時間以上の場合 time_info = 12840 のような形式になるのか? その場合12840を12:84:00とみるか、128:40:00とみるかどう場合分けするかも 仕様をきめないといけません
enigumalu

2019/05/08 09:50

決めまで教えていただきありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問