MySQLで別々の列にある日付と時刻を1つのdatetime型の列に連結する方法
MySQLでは、日付(DATE型)と時刻(TIME型)が別々の列に保存されている場合、CONCAT()関数を使うことで、両者を簡単に連結して1つのdatetime型の列にまとめることができます。この記事では、実際にテーブルを作成し、データを挿入して、日付と時刻を連結する手順を具体的に解説します。
1. テーブルの作成
まず、出荷日(ShippingDate)、出荷時刻(ShippingTime)、そして連結結果を格納するための出荷日時(ShippingDatetime)を持つテーブルを作成します。
mysql> create table DemoTable
-> (
-> ShippingDate date,
-> ShippingTime time,
-> ShippingDatetime datetime
-> );
Query OK, 0 rows affected (0.50 sec)
2. レコードの挿入
次に、insertコマンドを使ってサンプルデータを挿入します。この時点では、ShippingDatetime列はまだ空(NULL)の状態です。
mysql> insert into DemoTable(ShippingDate,ShippingTime) values('2019-01-10', '10:40:20');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ShippingDate,ShippingTime) values('2019-06-14', '04:00:10');
Query OK, 1 row affected (0.14 sec)3. データの確認
select文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
出力結果
+--------------+--------------+------------------+
| ShippingDate | ShippingTime | ShippingDatetime |
+--------------+--------------+------------------+
| 2019-01-10 | 10:40:20 | NULL |
| 2019-06-14 | 04:00:10 | NULL |
+--------------+--------------+------------------+
2 rows in set (0.00 sec)
4. CONCAT()関数で日付と時刻を連結する
ここが本題です。以下のUPDATE文では、CONCAT()関数を使ってShippingDateとShippingTimeを半角スペースで連結し、その結果をShippingDatetime列に代入しています。MySQLは連結された文字列をdatetime型として自動的に解釈してくれるため、明示的なキャストは不要です。
mysql> update DemoTable set ShippingDatetime=concat(ShippingDate,' ',ShippingTime);
Query OK, 2 rows affected (0.11 sec)
Rows matched: 2 Changed: 2 Warnings: 0
5. 更新結果の確認
再度テーブルの内容を確認すると、日付と時刻が正しく連結されていることがわかります。
mysql> select *from DemoTable;
出力結果
+--------------+--------------+---------------------+
| ShippingDate | ShippingTime | ShippingDatetime |
+--------------+--------------+---------------------+
| 2019-01-10 | 10:40:20 | 2019-01-10 10:40:20 |
| 2019-06-14 | 04:00:10 | 2019-06-14 04:00:10 |
+--------------+--------------+---------------------+
2 rows in set (0.00 sec)
まとめ
このように、CONCAT()関数に日付列・半角スペース・時刻列を渡すだけで、別々の列に分かれた日付と時刻を1つのdatetime型の値として結合できます。日付と時刻の間に必ずスペース(' ')を挿入するのがポイントです。SELECT文の中で直接使えば、元のデータを変更せずに表示だけ連結することも可能なので、用途に応じて使い分けるとよいでしょう。
-
MySQLでハイフン区切りの文字列値を1つの列から複数の列に分離して選択する方法
ハイフンで区切られた文字列値を1つの列から複数の列に分離して取得したい場合、MySQLの SUBSTRING_INDEX() 関数を使用すると簡単に実現できます。ここでは、サンプルテーブルを使って具体的な手順を解説します。 サンプルテーブルの作成 まず、従業員情報を格納するテーブルを作成します。 mysql> create table DemoTable1962 ( EmployeeInformation text ); Query OK, 0 rows affected (0.00 sec) データの挿入 次に、INSERT文を使って「ID-名前-年齢」の形
-
Python・Pandasで日時列から日付と時刻を分離するプログラムの作り方
データ分析では、DataFrame内の日時(datetime)列を「日付」と「時刻」に分けて扱いたい場面がよくあります。たとえば、日ごとの集計を行いたい場合や、時間帯だけを取り出して分析したい場合などが挙げられます。この記事では、datetime 列を date 列と time 列に分割する方法を、2つのアプローチで解説します。目標とする出力イメージ datetime date time 0 2020-01-01 07:10:00 2020-01-01 07:10:00 1 2020-01-02 07:10:00 2020-01-02 07