MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでカラムのデータ型をDATE型からDATETIME型に変更する方法

MySQLでテーブルのカラムのデータ型をDATE型からDATETIME型に変更したい場合は、ALTER TABLE文のCHANGE句を使用します。これにより、日付のみを格納していたカラムに時刻情報も保存できるようになり、既存のデータはそのまま引き継がれます。

サンプルテーブルの作成

まず、変更対象となるテーブルを作成しましょう。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    LoginDate date
    );
Query OK, 0 rows affected (1.26 sec)

レコードの挿入

INSERT文を使って、いくつかのレコードを追加します。

mysql> insert into DemoTable(LoginDate) values('2019-01-21');
Query OK, 1 row affected (0.29 sec)
mysql> insert into DemoTable(LoginDate) values('2018-05-01');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(LoginDate) values('2017-12-31');
Query OK, 1 row affected (0.12 sec)

登録データの確認

SELECT文ですべてのレコードを表示してみます。

mysql> select *from DemoTable;

出力結果

+----+------------+
| Id | LoginDate  |
+----+------------+
| 1  | 2019-01-21 |
| 2  | 2018-05-01 |
| 3  | 2017-12-31 |
+----+------------+
3 rows in set (0.66 sec)

ALTER TABLEでデータ型を変更する

以下が、MySQLでDATE型からDATETIME型へデータ型を変更するクエリです。CHANGE句は「現在のカラム名 新しいカラム名 新しいデータ型」の順に指定します。ここではカラム名を変えずに、データ型だけをdatetimeに変更しています。

mysql> alter table DemoTable change LoginDate LoginDate datetime;
Query OK, 3 rows affected (1.63 sec)
Records : 3 Duplicates : 0 Warnings : 0

補足: カラム名を変更しない場合は、alter table DemoTable modify LoginDate datetime; のようにMODIFY句を使うとよりシンプルに記述できます。

変更後のテーブル構造を確認

DESCコマンドでテーブル構造をチェックしましょう。

mysql> desc DemoTable;

出力結果

+-----------+----------+------+-----+---------+----------------+
| Field     | Type     | Null | Key | Default | Extra          |
+-----------+----------+------+-----+---------+----------------+
| Id        | int(11)  | NO   | PRI | NULL    | auto_increment |
| LoginDate | datetime | YES  |     | NULL    |                |
+-----------+----------+------+-----+---------+----------------+
2 rows in set (0.19 sec)

LoginDateカラムのTypeが「date」から「datetime」に変わっていることが確認できます。これで、時刻情報を含む値(例:'2019-01-21 14:30:00')も問題なく格納できるようになります。

  1. MySQLで文字列から日付を抽出する方法|SUBSTRING_INDEX関数の実践的な使い方

    MySQLで文字列から日付を抽出するには?MySQLで文字列の中から日付部分だけを取り出したい場合、SUBSTRING_INDEX() 関数を使うのが便利です。この関数は、指定した区切り文字を基準に文字列を分割し、必要な部分を取得できます。ここでは、実際にテーブルを作成し、文章の中に含まれる日付(例:12/31/2018)を抽出する手順を解説します。1. サンプルテーブルを作成するまず、文字列を格納するためのテーブルを作成します。mysql> create table DemoTable -> ( -> Title text -> );Query OK

  2. VARCHARデータをMySQLの日付形式に変換する方法

    VARCHAR型の日付文字列をDATE型に変換するにはMySQLでは、VARCHAR型として保存されている日付データを正式な日付形式に変換する場合、STR_TO_DATE() 関数を使用します。この関数は、文字列と書式指定子(フォーマット指定子)を組み合わせることで、任意の形式の文字列を日付値へと変換できる便利な機能です。以下、具体的な手順をサンプルとともに解説します。1. サンプルテーブルの作成まず、VARCHAR型のカラムを持つテーブルを作成します。mysql> create table DemoTable1989 ( DueDate varchar(20)