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

【MySQL】INT型のyyyymmdd形式の数値を日付(DATE)に変換する方法

MySQLでは、INT型で保存された「yyyymmdd」形式の数値(例:20190108)を日付型に変換したいケースがよくあります。このような場合、DATE()関数を使うことで簡単に変換できます。

本記事では、実際にテーブルを作成し、サンプルデータを用いてDATE()関数による変換手順を解説します。

1. サンプルテーブルの作成

まず、INT型のカラムを持つテーブルを作成します。

mysql> create table DemoTable
(
    Number int
);
Query OK, 0 rows affected (0.48 sec)

2. サンプルデータの挿入

INSERT文を使って、「yyyymmdd」形式の数値をいくつか登録します。

mysql> insert into DemoTable values(20190108);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable values(20161231);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values(20170411);
Query OK, 1 row affected (0.09 sec)

3. 登録データの確認

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

mysql> select *from DemoTable;

実行結果は以下のとおりです。現時点では数値として保存されていることがわかります。

+----------+
| Number   |
+----------+
| 20190108 |
| 20161231 |
| 20170411 |
+----------+
3 rows in set (0.00 sec)

4. DATE()関数で日付に変換する

INT型の「yyyymmdd」を日付に変換するには、次のようにDATE()関数を使用します。

mysql> select date(Number) from DemoTable;

実行結果は以下のとおりです。数値が「YYYY-MM-DD」形式の日付に正しく変換されています。

+--------------+
| date(Number) |
+--------------+
| 2019-01-08   |
| 2016-12-31   |
| 2017-04-11   |
+--------------+
3 rows in set (0.00 sec)

補足:STR_TO_DATE()関数との違い

DATE()関数以外にも、STR_TO_DATE()関数を使う方法があります。こちらは文字列や数値に対してフォーマットを明示的に指定できるため、より柔軟な変換が可能です。

mysql> select str_to_date(cast(Number as char), '%Y%m%d') from DemoTable;

単純な「yyyymmdd」形式であればDATE()関数で十分ですが、区切り文字を含む形式や独自フォーマットを扱う場合はSTR_TO_DATE()が便利です。用途に応じて使い分けるとよいでしょう。

  1. MySQLで日付型(DATE)カラムを更新する方法をわかりやすく解説

    MySQLでは、DATE_ADD()関数とUPDATE文を組み合わせることで、日付型(DATE)カラムの値を簡単に更新できます。この記事では、実際のSQL実行例を交えながら、日付カラムに1年を加算して更新する手順を解説します。 1. テーブルを作成する まず、日付型カラムを持つテーブルを作成します。 mysql> create table DemoTable1451 -> ( -> JoiningDate date -> ); Query OK, 0 rows affected (0.52 sec) ここでは「JoiningDate(入社日)」と

  2. MySQLで日付形式を変換する方法|STR_TO_DATE()関数の使い方を解説

    MySQLでは、VARCHAR型などで保存された文字列の日付データを、正しい日付・時刻形式に変換したいケースがよくあります。そんなときに活躍するのが STR_TO_DATE() 関数です。この記事では、実際のSQL例とともに具体的な使い方を解説します。サンプルテーブルの作成まず、日付を文字列として格納するテーブルを作成します。mysql> create table DemoTable2010 ( DueDate varchar(20) ); Query OK, 0 rows affected (0.68 sec)テストデータの挿入INSERT文を使って、「日/月/年 時:分:秒」